Compare commits

..

3072 Commits
v2.2.0 ... v6.1

Author SHA1 Message Date
Gabor Kiss-Vamosi
bd049d1ac3 Merge pull request #1283 from xennex22/dev-6.1
Removed redundent assignment
2019-11-26 07:02:30 +01:00
Gabor Kiss-Vamosi
aafa6e7ccb Merge pull request #1281 from amirgon/master
Remove redundant line
2019-11-26 07:01:45 +01:00
xennex22
c059025d42 Removed redundent assignment 2019-11-25 21:32:49 -08:00
Amir Gonnen
14c407dad3 Remote redundant line
Causes compilation error when LV_COLOR_DEPTH == 16
2019-11-25 23:16:53 +02:00
Gabor Kiss-Vamosi
8bb67c0303 release v6.1 2019-11-25 13:17:55 +01:00
Gabor Kiss-Vamosi
de48d1b558 Merge branch 'dev-6.1' 2019-11-25 13:17:35 +01:00
Gabor Kiss-Vamosi
b388c702e5 add lv_printf.h to lvgl.h 2019-11-25 13:15:12 +01:00
Gabor Kiss-Vamosi
5f2e5e4d01 add subpx and compressed fonts 2019-11-25 12:47:23 +01:00
Gabor Kiss-Vamosi
5f3374624e fix warnings 2019-11-25 11:11:41 +01:00
Gabor Kiss-Vamosi
d17e7c7b76 lv_txt_get_next_word: fix to hanfle recolor command with break chars too 2019-11-25 11:07:48 +01:00
Gabor Kiss-Vamosi
926dafd3b5 minor fixes 2019-11-25 07:15:01 +01:00
Gabor Kiss-Vamosi
a7bfaabfad regenerat fonts 2019-11-25 07:03:35 +01:00
Gabor Kiss-Vamosi
f0863b4179 fix minor warnings 2019-11-25 06:44:13 +01:00
Gabor Kiss-Vamosi
0422e662d9 lv_color.h use 1 common lv_color_make 2019-11-25 06:42:11 +01:00
Stepan Snigirev
12fa1ac788 Initialize variable to remove compiler warning (#1280) 2019-11-23 17:18:09 -05:00
Gabor Kiss-Vamosi
ab0cad1b52 Merge pull request #1279 from amirgon/dev-6.1
Fix `lv_mbox_create` for Micropython Binding
2019-11-23 07:36:03 +01:00
Amir Gonnen
ef2bee1e42 Merge branch 'dev-6.1' of https://github.com/amirgon/lvgl into dev-6.1 2019-11-23 01:42:58 +02:00
Amir Gonnen
9779513928 Fix lv_mbox_create for Micropython Binding
When passing array of strings, the parameter should be defined as const char *[], and not const char **
2019-11-23 01:41:27 +02:00
Gabor Kiss-Vamosi
9a94f88885 lv_font_fmt_txt: don't use bitfield for cmap to avoid bugs in Visual Studio 2019-11-21 12:00:23 +01:00
Gabor Kiss-Vamosi
b4b6a472fb use array[] instead of pointer in API function parameters where required 2019-11-21 06:08:09 +01:00
Gabor Kiss-Vamosi
9e74cdb145 Merge branch 'master' into dev-6.1 2019-11-19 13:47:38 +01:00
Gabor Kiss-Vamosi
810059e3ca lv_cb_get_style: fix with LV_CB_STYLE_BG 2019-11-19 13:47:07 +01:00
Themba Dube
5612856bca Add ability to customize LV_TXT_COLOR_CMD 2019-11-18 09:30:14 -05:00
Gabor Kiss-Vamosi
1ee7e1961e Merge branch 'master' into dev-6.1 2019-11-18 10:48:16 +01:00
Gabor Kiss-Vamosi
04ec2d17ec lv_task: check if a task has deleted itself 2019-11-18 10:45:44 +01:00
Gabor Kiss-Vamosi
59743f7f90 linemeter: angle offset fixes
rename lv_lmeter_set_angle to lv_lmeter_set_angle_offset
add lv_lemeter_get_angle_offset
initialze ext->angle_ofs in lv_lmeter_create
2019-11-16 11:27:35 +01:00
Gabor Kiss-Vamosi
197d95cf60 ta: fix label height after style change in one line mode 2019-11-15 15:23:47 +01:00
embeddedt
3452e60ec1 Silence -Wconversion 2019-11-15 08:03:11 -05:00
Gabor Kiss-Vamosi
48f81d9f28 lv_objx_templ: fix typo 2019-11-15 11:14:07 +01:00
Gabor Kiss-Vamosi
ca5940b693 lv_cpicker_set_color fix compiler error 2019-11-15 09:26:10 +01:00
Gabor Kiss-Vamosi
ac28a13564 fix warnings 2019-11-15 09:17:42 +01:00
Gabor Kiss-Vamosi
28cc431d95 Merge branch 'master' into dev-6.1 2019-11-15 07:29:00 +01:00
Gabor Kiss-Vamosi
bf5ea6658b update lv_conf_checker.h 2019-11-15 06:30:45 +01:00
Gabor Kiss-Vamosi
57cf7ef7d6 Merge pull request #1273 from neilabdev/hotfix/fix_roller_infinite_mode_initialization_bug
lv_roller_create cuases "divide by zero" via modulus operator for infinit scroll mode
2019-11-15 05:12:53 +01:00
Gabor Kiss-Vamosi
98c4514852 Merge pull request #1271 from littlevgl/fix_conversion_warnings
Fix -Wconversion warnings
2019-11-15 05:09:25 +01:00
James Whitfield
b9f7883b0b fixed bug where mode was not properly initialized for for roller extra attributes, causing crash in inf_normalize where there is a condition executed which causes a modulas divide by zero for mode LV_ROLLER_MODE_INFINITE, which is set at random because of dirty memory 2019-11-14 19:35:24 -08:00
Themba Dube
575df77a02 Fix public -Wconversion warnings 2019-11-14 20:38:47 -05:00
Gabor Kiss-Vamosi
bbf2c8247c Merge pull request #1268 from cpegeo/dev-6.1
Updated lv_refr_area and lv_img_design to account for single pixel height/width objects.
2019-11-13 19:44:40 +01:00
George Slater
de102f9d20 Updated lv_refr_area and lv_img_design to account for single pixel height/width objects.
lv_refr_area: Updated height for area refresh to correctly include areas that are a height of only 1 pixel.
lv_img_design: Updated draw loop to account for objects that are 1 pixel in height or width.
2019-11-13 11:54:05 -06:00
Gabor Kiss-Vamosi
7814d31613 Merge pull request #1261 from joltwallet/fix/txt_long_len
Fix/txt long len wrapping and disable macro
2019-11-13 08:38:44 +01:00
Gabor Kiss-Vamosi
92f9af3113 Merge branch 'dev-6.1' into fix/txt_long_len 2019-11-13 08:38:30 +01:00
Gabor Kiss-Vamosi
9792a74413 Merge pull request #1265 from pete-pjb/dev-6.1
Dev 6.1 Minor fixes
2019-11-13 07:39:59 +01:00
Gabor Kiss-Vamosi
060c27f54a Merge pull request #1264 from Maldus512/master
Added rotation feature to the lmeter
2019-11-13 07:39:07 +01:00
Pete Bone
1e4ce0b143 Dev 6.1 Minor fixes
lv_draw_arc.c -> line 218
Removed unsed fast_atan2() function which appears to have been moved to
lv_math.c as lv_atan2() function.

lv_font_heb_16.c -> line 1
Fixed inconsistent include path.

lv_label.c -> line 734
Added (char*) cast to const char* variable 'txt' to silence compiler
warning when LV_USE_BIDI is disabled.

lv_style.c -> line 93
Removed this line 

lv_style.c -> line 97
Reverted this line to remove override of LV_FONT_DEFAULT defined in
lv_conf.h
2019-11-12 15:26:35 +00:00
Mattia Maldini
b7c3732da7 Different wording 2019-11-12 16:14:18 +01:00
Gabor Kiss-Vamosi
6ebaaa6fa8 Update README.md 2019-11-12 15:25:52 +01:00
Gabor Kiss-Vamosi
db3d642096 Update README.md 2019-11-12 15:24:52 +01:00
Gabor Kiss-Vamosi
97a83cdf5c Create FUNDING.yml 2019-11-12 13:14:19 +01:00
Mattia Maldini
3cd2120b60 Added rotation feature to the lmeter 2019-11-12 13:07:26 +01:00
Brian Pugh
79f403ddc5 lv_txt enforce pretty wrapping when first word of a line is a long word. 2019-11-11 23:08:45 -08:00
Gabor Kiss-Vamosi
8ac7bddaf7 fix conflicts 2019-11-12 06:55:08 +01:00
Gabor Kiss-Vamosi
afb47ebf56 Merge pull request #1253 from amirgon/feat-bidi-pos_conv
Feat bidi pos conv
2019-11-12 06:49:05 +01:00
Gabor Kiss-Vamosi
49e105917e add LV_COLOR_SET/GET for every color depth configuration 2019-11-12 06:39:26 +01:00
Brian Pugh
1764220deb lv_txt set word width to 0 when not returning a word in lv_txt_get_next_word 2019-11-11 21:18:32 -08:00
Brian Pugh
bb91aeb64c Add ability to disable inter-long-word breaks by setting LV_TXT_LINE_BREAK_LONG_LEN<=0. Fix some off-by-one character wrapping logic 2019-11-11 20:57:33 -08:00
Gabor Kiss-Vamosi
f3b88a57ca add LV_COLOR_SET/GET_R/G/B
It was mainly because when LV_COLOR_16_SWAP = 1 and  green is split to green_h and green_l
2019-11-12 05:38:26 +01:00
Amir Gonnen
23b58d598d bugfixes
Prevent infinite loop when reaching end of string on get_next_run

Prevent warning about conversion to non const bidi_txt
2019-11-11 22:43:12 +02:00
Gabor Kiss-Vamosi
90eeff7022 merge dev-6.1 2019-11-11 19:42:10 +01:00
Gabor Kiss-Vamosi
46eabd6cf0 Merge pull request #1258 from joltwallet/fix/lv_color_warning
fix 1bit lv_color compilation warnings/errors introduced by ...
2019-11-11 13:07:43 +01:00
Gabor Kiss-Vamosi
8cf7824f82 Merge pull request #1259 from joltwallet/fix/txt_cursor_wrap
Fix cursor wrapping described in https://github.com/littlevgl/lvgl/is…
2019-11-11 12:28:50 +01:00
Gabor Kiss-Vamosi
c4f8d8cd5b bidi: txt_sel fixes 2019-11-11 11:10:01 +01:00
Brian Pugh
183d849e84 Fix cursor wrapping described in https://github.com/littlevgl/lvgl/issues/1256 2019-11-10 23:42:31 -08:00
Brian Pugh
57e2a6d983 fix 1bit lv_color compilation warnings/errors introduced by 3da868a090 2019-11-10 21:44:27 -08:00
Gabor Kiss-Vamosi
6eaf8dd6d3 text sel fix, if start > end 2019-11-10 11:03:19 +01:00
Gabor Kiss-Vamosi
8dfcba6aa8 text sel fixes with bidi 2019-11-10 10:52:49 +01:00
Gabor Kiss-Vamosi
6f762bb7c7 fix lv_cpicker_set_color with 16 bit color depth and byte swap
Fixes #1257
2019-11-10 10:45:54 +01:00
Gabor Kiss-Vamosi
96b9114a5a bidi fixes for multi line text handling 2019-11-09 01:53:02 +01:00
Amir Gonnen
0130f3e5f2 Add RTL indication to pos_conv
When getting visual/logical pos, also get whether this pos is RTL (was reversed)
2019-11-09 01:02:51 +02:00
Gabor Kiss-Vamosi
a3a326c2ff fix lv_label_get_letter_on in case of multi-line texts 2019-11-08 13:49:52 +01:00
embeddedt
45c6dbab62 lv_cpicker: credit @AloyseTech and @paulpv 2019-11-06 08:11:58 -05:00
Gabor Kiss-Vamosi
647341426c Merge pull request #1233 from paulpv/fix-hsv
Fix hsv
2019-11-06 05:33:28 +01:00
Gabor Kiss-Vamosi
86f44c974d cpicker: set default type 2019-11-06 05:32:42 +01:00
Gabor Kiss-Vamosi
a76e65db88 Merge branch 'feat-cpicker' into dev-6.1 2019-11-06 05:27:52 +01:00
Gabor Kiss-Vamosi
5441cf9998 bidi fixes + add missing prefix to lv_encoded_get_char_id 2019-11-06 05:19:06 +01:00
Maximilian Schwab
74254975cd Update comment for logging callback (#1255)
Changed lv_log_register_print to lv_log_register_print_cb
2019-11-05 19:40:22 -05:00
Gabor Kiss-Vamosi
5d5a8b4894 convert lv_bidi_get_visual_pos to byteindex 2019-11-05 16:00:32 +01:00
Amir Gonnen
6f57de051b WIP: pos_conv, bugfixes, use in lv_label 2019-11-05 01:03:40 +02:00
Gabor Kiss-Vamosi
769c1a8f8a define empty LV_DEBUG_ASSERT if LV_USE_DEBUG is 0 2019-11-04 20:35:47 +01:00
Amir Gonnen
c7a7d1adca WIP: pos_conv add lv_bidi_get_logical/visual_pos functions 2019-11-04 09:26:52 +02:00
Amir Gonnen
f6829a17b2 WIP: Bidi pos_conv 2019-11-04 01:31:54 +02:00
Jan Van Winkel
9472d0d0c7 Added missing lv_indev.h includes (#1251) 2019-11-03 08:43:26 -05:00
Gabor Kiss-Vamosi
5222bf92c4 kb: use LV_SYMBOL_NEW_LINE as new line 2019-11-02 23:33:25 +01:00
Gabor Kiss-Vamosi
3c662670f0 Merge branch 'master' into dev-6.1 2019-11-02 21:35:14 +01:00
Gabor Kiss-Vamosi
8db8470a60 lv_ta_set_placeholder_text: fix placholder align 2019-11-02 21:34:41 +01:00
Gabor Kiss-Vamosi
e0dee03233 Merge branch 'master' into dev-6.1 2019-11-02 21:32:08 +01:00
Themba Dube
982e2036cf Fix inconsistency between lv_debug.c and lv_debug.h 2019-10-31 20:21:58 -04:00
Themba Dube
b02bf9d804 Merge branch 'dev-6.1' of github.com:littlevgl/lvgl into dev-6.1 2019-10-31 20:21:28 -04:00
Gabor Kiss-Vamosi
fb9fb8d09e add LV_LABEL_TEXT_SEL_OFF again 2019-10-31 19:24:41 +01:00
Gabor Kiss-Vamosi
da7e67b381 fix lv_cb_is_inactive 2019-10-31 14:14:40 +01:00
Gabor Kiss-Vamosi
0f1e5fba16 Merge pull request #1245 from cpegeo/dev-6.1
lv_color1_t: Add 'ch' struct to union to fix 1bit color compilation error
2019-10-31 06:33:08 +01:00
George Slater
3da868a090 lv_color1_t: Add 'ch' struct to union to fix 1bit color compilation error.
lv_color.h:
Updated lv_color1_t union to include 'ch' structure. This fixes compilation errors when configured for 1bit color.
2019-10-30 17:03:56 -05:00
Themba Dube
9baef1ef96 Add missing definition of LV_LABEL_TEXT_SEL_OFF 2019-10-30 11:31:24 -04:00
Gabor Kiss-Vamosi
c86e2722bd lv_draw_label: fix warning with txt_sel by adding lv_draw_label_txt_sel_t parameter 2019-10-30 10:16:06 +01:00
Gabor Kiss-Vamosi
cfb72d5b69 fix text recolor processing 2019-10-30 06:49:21 +01:00
Gabor Kiss-Vamosi
38ba12a866 imgbtn fix 2019-10-30 06:32:58 +01:00
Gabor Kiss-Vamosi
dd100e5e07 ta: fix place holder alignment. Fixes #1241 2019-10-29 14:33:59 +01:00
Gabor Kiss-Vamosi
8fe92bcd9a lv_task: rename task_handler_mutex to already_running. Fixes #1238 2019-10-28 06:24:47 +01:00
Gabor Kiss-Vamosi
dd68877aae bidi bracket handling fixies 2019-10-28 05:47:31 +01:00
Themba Dube
98b353879f Merge remote-tracking branch 'origin/dev-6.1' into feat-cpicker 2019-10-27 09:13:47 -04:00
Themba Dube
6051e20b6c Merge remote-tracking branch 'paulpv/feat-cpicker' into feat-cpicker 2019-10-27 09:10:41 -04:00
Gabor Kiss-Vamosi
98a4d9b062 bidi: barcket process fixes 2019-10-27 10:44:00 +01:00
Gabor Kiss-Vamosi
1c4695a21e Merge branch 'dev-6.1' into feat-bidi 2019-10-27 10:25:51 +01:00
Gabor Kiss-Vamosi
9048e8072b fix conflicts 2019-10-27 10:25:33 +01:00
Gabor Kiss-Vamosi
081b2c2271 bidi: barcket handle fixes 2019-10-27 10:21:37 +01:00
Gabor Kiss-Vamosi
7f19fb53e6 set LV_MEM_JUNK to 0 2019-10-25 13:37:39 +02:00
Gabor Kiss-Vamosi
57a8ee8e32 bidi: add bracket algorithm 2019-10-25 06:15:11 +02:00
Paul Peavyhouse
6df1fe190a #include and use LV_MATH_ABS 2019-10-24 20:13:03 -07:00
Paul Peavyhouse
372b133b18 Converting to integer based math 2019-10-24 16:46:30 -07:00
Gabor Kiss-Vamosi
f02d52a598 merge dev-6.1 2019-10-24 15:25:52 +02:00
Gabor Kiss-Vamosi
d5aabef42d Merge pull request #1231 from amirgon/feat-bidi-wrap
Bidi multi-line text wrap
2019-10-24 13:29:20 +02:00
Gabor Kiss-Vamosi
4158334a40 bidi: ahndle LV_BIDI_DIR_AUTO in lv_bidi_process_paragraph 2019-10-24 07:15:00 +02:00
Gabor Kiss-Vamosi
f38b12ee6c Merge branch 'dev-6.1' of https://github.com/littlevgl/lvgl into dev-6.1 2019-10-24 06:15:45 +02:00
Gabor Kiss-Vamosi
437b34390c fix compiler error with LV_COLOR_16_SWAP adnd LV_SUBPX_BGR 2019-10-24 06:15:19 +02:00
Gabor Kiss-Vamosi
32689cb3e5 Merge pull request #1234 from Boldie/fix_racecondition_flushing
Reset flushing after setting the buffer content to fix race condition.
2019-10-24 06:11:14 +02:00
Sven Steckmann
6f6c26b058 Reset flushing after setting the buffer content to fix race condition.
Flushing flag is used to wait for the finish of the transfer. If this
is reset to 0, the other parts of the code will start accessing the buf_act
(see src/lv_core/lv_refr.c:106) and thus may create a race condition. Exchanging
the resetting to 0 and memset will fix this issue.
2019-10-23 23:48:52 +02:00
Paul Peavyhouse
ddd7c1d30c Adding ending newline 2019-10-22 13:29:38 -07:00
Paul Peavyhouse
a572d8a648 Keeping some original variable names 2019-10-22 13:19:22 -07:00
Paul Peavyhouse
65252024bf Formatting 2019-10-22 13:17:53 -07:00
Paul Peavyhouse
69d7d53768 Documenting code 2019-10-22 13:07:01 -07:00
Paul Peavyhouse
6aff9f65ed Floating point fix for RGB to HSV
Test code at https://github.com/paulpv/lv_examples/blob/master/lv_tests/lv_test_misc/lv_test_color/lv_test_color.ino
2019-10-22 13:02:31 -07:00
Gabor Kiss-Vamosi
cfddd8df65 ddlist: fix label alignment after style change 2019-10-22 06:01:48 +02:00
Amir Gonnen
0634b11578 Add minus (hyphen) as neutral letter 2019-10-22 01:36:37 +03:00
Paul Peavyhouse
3264af9f0e Fixing failure to invalidate indicator 2019-10-21 15:27:57 -07:00
Paul Peavyhouse
901d108bae Merge branch 'dev-6.1' into feat-cpicker 2019-10-21 15:25:36 -07:00
Gabor Kiss-Vamosi
c241905d88 lv_font_roboto_16: add missing symbols 2019-10-21 07:13:04 +02:00
Gabor Kiss-Vamosi
23ec092c14 fix subpxixel rendering with LV_COLOR_16_SWAP 2019-10-21 06:41:40 +02:00
Gabor Kiss-Vamosi
246adc7b43 Merge pull request #1218 from paulpv/fix-rgb565
Fix RGB 565 to 888
2019-10-21 06:30:49 +02:00
Gabor Kiss-Vamosi
0bd200a36a Merge pull request #1228 from tgillbe/feature_arc_antialias
Add arc antialiasing
2019-10-21 05:26:33 +02:00
Amir Gonnen
f7c2512c76 Bidi fixes
Add bidi_dir parameter to lv_draw_label

Use draw buffer for bidi processing

condition bidi code according to LV_USE_BIDI
2019-10-20 02:16:57 +03:00
Paul Peavyhouse
ae006b2bc9 typo 2019-10-19 05:26:18 -07:00
Paul Peavyhouse
a11a06547f More mathematically worded 2019-10-19 05:24:25 -07:00
Paul Peavyhouse
8694b3889b Not so concise comment 2019-10-19 05:17:22 -07:00
Paul Peavyhouse
649e438f0d Experimented and found "smaller" math 2019-10-19 04:04:07 -07:00
Gabor Kiss-Vamosi
9a7b7f8511 btnm, tabview: in LV_SIGNAL_FOCUS assume the last indev if not focused by the an indev 2019-10-19 11:01:10 +02:00
Gabor Kiss-Vamosi
4c944f4050 subpx fixes 2019-10-19 10:29:59 +02:00
tgillbe
6cfb0af7c3 Add arc antialiasing 2019-10-18 15:34:57 +01:00
Gabor Kiss-Vamosi
e1c46cb9bc Merge branch 'feat-subpixel' into dev-6.1 2019-10-18 14:58:04 +02:00
Gabor Kiss-Vamosi
f282c3bd08 subpx: read fro mteh font if subpx is supported 2019-10-18 14:57:27 +02:00
Amir Gonnen
c6b7cf130b Support text wrap for bidi text
TODO: conditional LV_USE_BIDI, allocate global buffer once, pass dir as parameter to lv_draw_label
2019-10-18 02:13:41 +03:00
Paul Peavyhouse
04158b39cd Fully tested values 5 bit red/blue 0 to 31 and 6 bit green 0 to 63 2019-10-16 23:21:30 -07:00
Paul Peavyhouse
92be109cba Fixing +/- 3 conversion problem 2019-10-16 22:41:56 -07:00
Gabor Kiss-Vamosi
87d191e737 lv_font.h: change field order 2019-10-17 06:47:51 +02:00
Themba Dube
2e612c91bd Merge remote-tracking branch 'origin/dev-6.1' into feat-cpicker 2019-10-16 20:37:54 -04:00
Amir Gonnen
770645ecd0 add Hebrew font 2019-10-16 23:35:38 +03:00
Amir Gonnen
93a94bc4d5 Add exported constants to log-level macros (#1226)
See GitHub comments on 0df7d0d996.
2019-10-16 16:21:07 -04:00
Amir Gonnen
c7b8626780 Add exported constants to log-level macros
See comments to 0df7d0d996
2019-10-16 23:09:55 +03:00
Gabor Kiss-Vamosi
27c8a88c94 lv_tabiew: fix indicator position 2019-10-16 11:16:16 +02:00
Gabor Kiss-Vamosi
bd9695ab03 font: fix of decompression if size = 0 2019-10-16 11:16:03 +02:00
Gabor Kiss-Vamosi
10b3463a5f add lv_font_subpx_t 2019-10-16 10:34:54 +02:00
Gabor Kiss-Vamosi
bcdd680a2f table: apply bidi on cell values 2019-10-16 05:08:21 +02:00
Gabor Kiss-Vamosi
6b5c89baf7 lv_label_ins_text: consider base dir 2019-10-15 14:25:47 +02:00
Gabor Kiss-Vamosi
54e34c15b9 btnm, tabview: revers the button/tab order with RTL base dir 2019-10-15 11:04:49 +02:00
Gabor Kiss-Vamosi
06746dfd63 fix page overflow when object created on the right due to RTL base dir 2019-10-15 10:32:15 +02:00
Gabor Kiss-Vamosi
f1c7e19985 bidi: remove debug printfs 2019-10-14 16:02:28 +02:00
Gabor Kiss-Vamosi
9d2a2c58f9 In case of RTL with LV_LAYOUT_ROW_X arrangle from the right 2019-10-14 15:25:40 +02:00
Themba Dube
de55986fc0 Merge branch 'dev-6.1' into feat-cpicker 2019-10-12 21:04:21 -04:00
Themba Dube
93ce1b9e1c Silence GCC warning about extra semicolons 2019-10-12 21:03:54 -04:00
Themba Dube
0df7d0d996 Partially revert lv_log.h to fix compilation issue until consensus is reached 2019-10-12 21:00:00 -04:00
Themba Dube
7f5ce8ca37 Merge branch 'dev-6.1' into feat-cpicker 2019-10-12 20:55:29 -04:00
Themba Dube
dcc287c936 Merge remote-tracking branch 'origin/master' into dev-6.1 2019-10-12 20:55:17 -04:00
Themba Dube
bd402605da Merge branch 'dev-6.1' of github.com:littlevgl/lvgl into dev-6.1 2019-10-12 20:54:02 -04:00
Gabor Kiss-Vamosi
c2b3976d5a Merge pull request #1219 from TridentTD/master
Update drawing round-ending lines for the canvas's obj
2019-10-11 16:10:24 +02:00
Gabor Kiss-Vamosi
6d93057532 minor fixes 2019-10-11 15:03:17 +02:00
Gabor Kiss-Vamosi
bae1cb6ae0 lv_conf_checker.py: support macros with parentheses 2019-10-11 15:03:12 +02:00
Gabor Kiss-Vamosi
7325a3cdde Merge branch 'dev-6.1' of https://github.com/littlevgl/lvgl into dev-6.1 2019-10-11 14:43:36 +02:00
Gabor Kiss-Vamosi
641117e896 tabview: on FOCUS preselect the currently active tab 2019-10-11 14:43:29 +02:00
Gabor Kiss-Vamosi
fe35307d9f fix page oveflow with right aligned object (due to RTL base dir) 2019-10-11 14:15:38 +02:00
Gabor Kiss-Vamosi
6f001958ce bidi: fix btnm, kb, ta, table behaviour in RTL context 2019-10-11 12:01:58 +02:00
Gabor Kiss-Vamosi
c747f29664 ddlist: RTL deafult pos fixes 2019-10-10 14:34:39 +02:00
Gabor Kiss-Vamosi
cadf2bd97d with RTL base dir: create the object on the right and grow to the right in lv_obj_set_width 2019-10-10 14:16:11 +02:00
Gabor Kiss-Vamosi
7f7abe9a93 subpixel: update drawing to support both types 2019-10-10 07:09:30 +02:00
TridentTD
aa1d5080e4 add if(style->line.rounded) 2019-10-09 23:12:47 +07:00
TridentTD
8af6043e75 add if(style->line.rounded) 2019-10-09 23:11:16 +07:00
Gabor Kiss-Vamosi
7a0728fc3c bidi: minor fixes 2019-10-09 15:36:38 +02:00
Gabor Kiss-Vamosi
a12bbfe0d2 subpixel: add test font 2019-10-09 14:29:22 +02:00
Gabor Kiss-Vamosi
1016b8bb47 Merge pull request #1220 from ScarsFun/master
hide sign in spinbox widget if only positive values
2019-10-09 14:26:31 +02:00
Gabor Kiss-Vamosi
0257fbcd5a bidi: process in paragraphs 2019-10-09 14:00:28 +02:00
Gabor Kiss-Vamosi
eeabd32b9e bidi: minor fixes 2019-10-08 16:54:28 +02:00
crnchbng
68c752ab50 Fix compile issue with LV_EXT_CLICK_AREA_TINY (#1221)
Discussed in https://github.com/littlevgl/lv_gui_builder/issues/2#issuecomment-495246128.
2019-10-08 10:53:31 -04:00
Gabor Kiss-Vamosi
34e133586e make LV_USE_BIDI = 0 by default 2019-10-08 16:31:32 +02:00
Gabor Kiss-Vamosi
b06ef2620a merge dev-6.1 2019-10-08 16:29:40 +02:00
Gabor Kiss-Vamosi
6190763382 bidi: add LV_LABEL_ALIGN_AUTO, LV_BIDI_DIR_AOUT/INHERIT, LV_SIGNAL_BASE_DIR_CHG 2019-10-08 16:26:55 +02:00
Pusillus
99fd136758 hide sign if only positive values 2019-10-08 06:25:40 +02:00
Gabor Kiss-Vamosi
2117c4dab2 fix lv_btn_get_ink_out_time 2019-10-08 06:04:58 +02:00
Gabor Kiss-Vamosi
beafc32594 subpixel: initial test 2019-10-07 20:50:44 +02:00
Pusillus
dbccceea51 hide sign if only positive values 2019-10-06 08:29:15 +02:00
TridentTD
80448a1d54 Update drawing round-ending lines for the canvas's obj 2019-10-06 11:46:44 +07:00
Paul Peavyhouse
e0ca7581ef Initial commit of only 565 to 888; will check others next 2019-10-04 17:03:40 -07:00
Paul Peavyhouse
05f23d5ff0 Merge remote-tracking branch 'littlevgl/dev-6.1' into dev-6.1 2019-10-04 16:16:30 -07:00
Gabor Kiss-Vamosi
92b9141788 Merge pull request #1217 from amirgon/dev-6.1
use "export" macro to export interesting defines to binding
2019-10-04 12:25:23 +02:00
Amir Gonnen
02755339bc Move LV_EXPORT_CONST_INT to compiler settings section 2019-10-04 12:26:33 +03:00
Paul Peavyhouse
34faac98a7 Cleaner calls to get_indic_area 2019-10-03 23:35:57 -07:00
Amir Gonnen
d1d3ef4305 use "export" macro to export interesting defines to binding 2019-10-03 23:20:50 +03:00
Paul Peavyhouse
68c39030a6 Missed a line! 2019-10-03 04:04:27 -07:00
Paul Peavyhouse
61dfb56648 Consolidating common indicator_area calculation code 2019-10-03 04:02:38 -07:00
Paul Peavyhouse
ca9c4c8fda Code formatting 2019-10-03 03:11:38 -07:00
Paul Peavyhouse
c74e6a6207 Shrinking the gap between outer ring and inner preview a little 2019-10-02 21:14:28 -07:00
Gabor Kiss-Vamosi
abb480f988 lv_win_set_content_size: fix setting the size 2019-10-03 06:11:40 +02:00
Gabor Kiss-Vamosi
de96092537 remove unused vars 2019-10-03 06:06:27 +02:00
Gabor Kiss-Vamosi
3753265f56 update makefile 2019-10-03 06:06:20 +02:00
Gabor Kiss-Vamosi
8fb484ab91 font: fix the use of signed/unsiged types 2019-10-03 06:02:21 +02:00
Gabor Kiss-Vamosi
dd87cb8ef4 fix built-in fonts' include path 2019-10-03 05:55:53 +02:00
Gabor Kiss-Vamosi
e4bd622c78 Merge branch 'master' into dev-6.1 2019-10-03 05:54:43 +02:00
Gabor Kiss-Vamosi
dab042fe06 fix lv_font_unscii_8 include 2019-10-03 05:54:21 +02:00
Gabor Kiss-Vamosi
6d52976a16 update (re-generate) lv_font_unscii_8 2019-10-03 05:48:49 +02:00
Themba Dube
0d31e63a1e Merge remote-tracking branch 'origin/master' into dev-6.1 2019-10-02 20:12:58 -04:00
Paul Peavyhouse
b49edd91a2 All color setters use lv_cpicker_set_hsv and return bool for change 2019-10-02 16:21:44 -07:00
Paul Peavyhouse
994057b578 Removing extra indentation 2019-10-02 15:25:25 -07:00
Paul Peavyhouse
8fc9b12c64 Merge remote-tracking branch 'littlevgl/feat-cpicker' into feat-cpicker 2019-10-02 15:20:15 -07:00
Gabor Kiss-Vamosi
434ef7e667 cpicker: minor fixes 2019-10-02 16:58:41 +02:00
Gabor Kiss-Vamosi
d4196c7534 cpicker: add preview feature 2019-10-02 16:47:08 +02:00
Gabor Kiss-Vamosi
e8625aaf65 add cpicker to lv_conf_template.h 2019-10-02 09:02:43 +02:00
Gabor Kiss-Vamosi
11d5fcb9ae cpicker: on double click reset only the current color mode 2019-10-02 08:32:10 +02:00
Paul Peavyhouse
786eabe1c7 Merge remote-tracking branch 'littlevgl/feat-cpicker' into feat-cpicker 2019-10-01 20:22:57 -07:00
Gabor Kiss-Vamosi
10d90a8baa cpicker: minor fixes 2019-10-01 22:08:14 +02:00
Gabor Kiss-Vamosi
eda607d824 cpicker: minor fixes 2019-10-01 22:00:23 +02:00
Gabor Kiss-Vamosi
2600c1c3d9 cpicker: rework 2019-10-01 21:16:30 +02:00
Gabor Kiss-Vamosi
c64dc1d645 bidi: compose otput string and swap arithmetical symbols 2019-10-01 05:48:46 +02:00
Gabor Kiss-Vamosi
8cb508dfec cpicker minor renames 2019-10-01 05:20:20 +02:00
Paul Peavyhouse
af7b2857ee Moving a method 2019-09-30 15:51:18 -07:00
Paul Peavyhouse
98d29cdcd1 Merge remote-tracking branch 'littlevgl/feat-cpicker' into feat-cpicker 2019-09-30 15:46:15 -07:00
Paul Peavyhouse
974e4a245e Consolidating Disc and Rect lv_cpicker_signal 2019-09-30 15:43:02 -07:00
Paul Peavyhouse
333812ba7a Improvements to color picker (#1208) 2019-09-30 10:00:34 -04:00
Gabor Kiss-Vamosi
5e7edc30be Merge pull request #1209 from liuduanfei/master
fixed comment error.
2019-09-30 12:28:14 +02:00
Gabor Kiss-Vamosi
c190374c79 img_cache: store the filename instead of its pointer 2019-09-30 11:56:38 +02:00
HappyTime
a5de64f93c fixed comment error. 2019-09-30 16:56:47 +08:00
Gabor Kiss-Vamosi
a35a79ba4e lv_img: fix caching when image source changes 2019-09-30 06:21:18 +02:00
Paul Peavyhouse
93d2d422b8 Not emitting LV_EVENT_VALUE_CHANGED if double-click doesn't change value 2019-09-29 21:11:53 -07:00
Paul Peavyhouse
1339d92ccd Code formatting 2019-09-29 21:02:12 -07:00
Paul Peavyhouse
bf9ed06bac Consolidating identical LV_KEY_RIGHT/UP and LV_KEY_LEFT/DOWN code 2019-09-29 21:00:00 -07:00
Paul Peavyhouse
3a5293fa32 Tiny consolidation of identical LV_SIGNAL_PRESS_LOST code 2019-09-29 20:56:05 -07:00
Paul Peavyhouse
ab2114e4e7 Eventing LV_EVENT_VALUE_CHANGED when double-clicked 2019-09-28 01:54:10 -07:00
Paul Peavyhouse
1a3d61e074 Consolidate separate h, s, & v vars in to single lv_color_hsv_t var 2019-09-28 01:46:43 -07:00
Gabor Kiss-Vamosi
1a5001d7a3 Merge pull request #1196 from paulpv/color_picker_6
Porting @AloyseTech's color picker from lvgl v5 to v6
2019-09-28 09:16:55 +02:00
Gabor Kiss-Vamosi
a50e597942 bidi: support currencies in rtl 2019-09-28 08:40:02 +02:00
Gabor Kiss-Vamosi
c1e0faf440 Merge pull request #1206 from pete-pjb/dev-6.1
Added extra keyboard mode to enable caps-lock defined as
2019-09-27 10:07:07 +02:00
pete-pjb
3f89a91d9c Changed LV_KB_MODE_TEXT_UC to LV_KB_MODE_TEXT_UPPER as suggested to make
it more intuitive.
2019-09-27 08:43:14 +01:00
pete-pjb
e94f8e3cfc Changed LV_KB_MODE_TEXT_UC to LV_KB_MODE_TEXT_UPPER as suggested to make
it more intuitive.
2019-09-27 08:39:23 +01:00
Gabor Kiss-Vamosi
3aac71b16e lv_btnm: fix row positions 2019-09-27 09:10:26 +02:00
Paul Peavyhouse
7ac2aff982 Using #define defaults instead of hard-coded numbers 2019-09-26 22:35:41 -07:00
Paul Peavyhouse
280c291db7 Cleaned up and ready for [hopefully] final code review! 2019-09-26 22:22:27 -07:00
Gabor Kiss-Vamosi
ac269ebaad bidi: fixes 2019-09-27 06:03:54 +02:00
Gabor Kiss-Vamosi
a3b61e72fc imgbtn: support symbols 2019-09-27 04:04:57 +02:00
Gabor Kiss-Vamosi
5370543e95 Merge branch 'feat-debug' into dev-6.1 2019-09-27 03:29:34 +02:00
Gabor Kiss-Vamosi
f00c24f312 debug: add style sentinel 2019-09-27 03:28:44 +02:00
Paul Peavyhouse
85ffe5f974 Merge branch 'dev-6.1' into color_picker_6 2019-09-26 12:48:04 -07:00
Paul Peavyhouse
c5e7fbd953 Merge remote-tracking branch 'littlevgl/dev-6.1' into dev-6.1 2019-09-26 12:47:31 -07:00
Paul Peavyhouse
8476692731 [Still] working cleanup checkpoint 2019-09-26 12:32:05 -07:00
Paul Peavyhouse
25d4991683 Whitespace changes 2019-09-26 11:24:47 -07:00
Paul Peavyhouse
d3962fc26c [Still] working cleanup checkpoint 2019-09-26 11:17:13 -07:00
pete-pjb
96e64ad6fc Added extra keyboard mode to enable caps-lock defined as
LV_KB_MODE_TEXT_UC
2019-09-26 18:24:28 +01:00
Gabor Kiss-Vamosi
0a9eeba4e4 dubug: add asserts to every object type's API functions 2019-09-26 15:13:33 +02:00
Gabor Kiss-Vamosi
ede392b7c9 debug: add assterts to lv_obj and update signal functions 2019-09-26 10:51:54 +02:00
Paul Peavyhouse
8e7bd571af Syncing... 2019-09-25 23:41:32 -07:00
Paul Peavyhouse
4d44d16b2e Changing QF from 1 to 3 2019-09-25 23:16:12 -07:00
Gabor Kiss-Vamosi
8dcb1ff21c cpicker: fix line indicator artifact 2019-09-26 07:23:23 +02:00
Gabor Kiss-Vamosi
6e9f10451d Merge branch 'color_picker_6' of https://github.com/paulpv/lvgl into paulpv-color_picker_6 2019-09-26 07:06:58 +02:00
Paul Peavyhouse
46dead9ab9 Consolidating all angle2color/color2angle calculations 2019-09-25 22:02:06 -07:00
Paul Peavyhouse
e9941eaf4c Persist gradient_w & gradient_h to ext
Thought was that it would help invalidating, but it did not.
Still, it helps to clean up the code a tad.
2019-09-25 20:39:56 -07:00
Gabor Kiss-Vamosi
8ce6c32415 add symbols: NEW_LINE, SD_CARD, USB, EYE_OPEN, EYE_CLOSE 2019-09-25 11:37:56 +02:00
Gabor Kiss-Vamosi
e9b6fcd58d debug: minor fixes 2019-09-25 08:58:12 +02:00
Paul Peavyhouse
53a1188f7c Fixing create bug 2019-09-24 21:10:23 -07:00
Paul Peavyhouse
c4e9f69868 Adding lv_cpicker_set_type 2019-09-24 21:06:51 -07:00
Paul Peavyhouse
93cef9e121 Checkpoint of only **partially** working optimized invalidation :/ 2019-09-24 18:48:57 -07:00
Paul Peavyhouse
0b4e7629b8 Got most modes fully working; Rect invalidation not optimized. 2019-09-24 18:00:39 -07:00
Gabor Kiss-Vamosi
5660181b81 debug: rework asserts 2019-09-24 23:14:17 +02:00
Paul Peavyhouse
a7dc9e852c Fix Rect by using persisted gradient & preview area in touch calculation 2019-09-24 13:48:41 -07:00
Gabor Kiss-Vamosi
3dfbc5c85d create lv_bidi.c/h 2019-09-24 21:00:58 +02:00
Gabor Kiss-Vamosi
366f958e1a debug: add the basics of LV_DEBUG 2019-09-24 16:30:38 +02:00
Gabor Kiss-Vamosi
7ef624054a bidi: update list weak and neutral chars 2019-09-24 10:50:43 +02:00
Gabor Kiss-Vamosi
bddf31824c bidi: handle starting and trailing neutrals 2019-09-24 10:30:58 +02:00
Johannes Bauer
4479a22696 Fixed outdated filename in README.md (#1201)
Template header file has been renamed from lv_conf_templ.h to
lv_conf_template.h; reflect that change in the README.md.
2019-09-23 10:11:41 -04:00
Gabor Kiss-Vamosi
2c5c4abdce bidi: clean up 2019-09-23 14:24:15 +02:00
Gabor Kiss-Vamosi
62c6ede15e bidi: first attempt to get runs 2019-09-23 14:17:27 +02:00
embeddedt
bebd2dd896 Update lv_version.h to reflect new development version 2019-09-21 07:02:34 -04:00
Gabor Kiss-Vamosi
6d81b453b3 Merge branch 'master' into dev-6.1 2019-09-20 16:31:33 +02:00
Gabor Kiss-Vamosi
9f978cb087 lv_ta: copy fixes 2019-09-20 16:31:12 +02:00
Gabor Kiss-Vamosi
87c3296d92 lv_kb: use LV_SYMBOL_BACKSPACE 2019-09-20 07:52:13 +02:00
Gabor Kiss-Vamosi
f341ad9b60 use FontAwesome v5 and add Backspace and Paste symbols 2019-09-20 07:52:13 +02:00
Themba Dube
e4bcade975 Merge remote-tracking branch 'origin/master' into dev-6.1 2019-09-19 09:01:25 -04:00
embeddedt
cf1fed89e0 Make lv_ta_get_placeholder_text do what it says
Thanks to @TridentTD on the forum for reporting this: https://forum.littlevgl.com/t/bug-at-textareas-lv-ta-get-placeholder-text/707
2019-09-19 08:56:16 -04:00
Paul Peavyhouse
305ac5ff69 Got invalidation working 2019-09-18 21:37:18 -07:00
Paul Peavyhouse
fc1b5c682d Mostly working except for [I think] invalidation; refactoring a bit 2019-09-18 21:23:56 -07:00
Paul Peavyhouse
b67f40ed39 Got the gradient to draw and background honor theme 2019-09-18 17:22:16 -07:00
Paul Peavyhouse
12ee870e2c Got the center button to draw, albeit seems like the wrong color 2019-09-18 15:14:23 -07:00
Paul Peavyhouse
7f565f419a Initial commit of porting @AloyseTech's color picker from lvgl v5 to v6 2019-09-18 12:03:32 -07:00
Vadym Mishchuk
3dc57783ad lv_chart: add secondary Y axis and ability to reverse label order (#1194) 2019-09-18 08:44:57 -04:00
Gabor Kiss-Vamosi
9c8e0f0552 lv_win: add lv_win_set_content_size 2019-09-18 06:30:17 +02:00
Gabor Kiss-Vamosi
a611160636 Merge branch 'master' into dev-6.1 2019-09-14 11:46:51 +02:00
Gabor Kiss-Vamosi
88bda09f5f btnm: fix keyboard navigation 2019-09-14 11:24:48 +02:00
Gabor Kiss-Vamosi
f190c78195 font compression: add prefilter support 2019-09-13 15:40:12 +02:00
Gabor Kiss-Vamosi
915046d3ba add font decompression and bpp=3 support 2019-09-13 11:51:31 +02:00
Gabor Kiss-Vamosi
a031af4f1e lv_list: fix the use of last_clicked_btn 2019-09-12 16:04:11 +02:00
Gabor Kiss-Vamosi
8e5e33d746 add lv_slider_set/get_sym 2019-09-12 15:25:49 +02:00
Gabor Kiss-Vamosi
eefd9c4e0d lv_table: fix crash on copy in lv_table_create 2019-09-04 16:07:05 +02:00
Gabor Kiss-Vamosi
ffd4708ac3 Remove survey 2019-09-04 15:58:05 +02:00
embeddedt
49c2bbedbb Fix alpha indexed images with 1 bit color depth (#1184) 2019-09-03 13:53:56 -04:00
Deon Marais
8efba76073 Make sin table constant in lv_math.c (#1185) 2019-09-01 09:19:14 -04:00
Gabor Kiss-Vamosi
78125b66db Update lv_version.h 2019-08-30 10:59:04 +02:00
Gabor Kiss-Vamosi
f15bd1c59b Merge pull request #1183 from tgillbe/dev-6.1
Add transparency support to indexed images
2019-08-29 15:32:18 +02:00
Themba Dube
2a4ba5042e Merge branch 'dev-6.1' of github.com:littlevgl/lvgl into dev-6.1 2019-08-28 18:53:48 -04:00
Themba Dube
b1047f4b59 ddlist: move arrow to other side if right alignment is used 2019-08-28 18:53:30 -04:00
tgillbe
54a9ea6179 Action review comments 2019-08-28 15:07:17 +01:00
tgillbe
1ff1e31ed8 Add transparency support to indexed images 2019-08-28 14:24:17 +01:00
HarryManderTait
74d5ac5553 lv_preload: add constant-speed loader (#1181) 2019-08-28 08:01:50 -04:00
Themba Dube
cfc86713ce Merge remote-tracking branch 'origin/master' into dev-6.1 2019-08-27 17:33:51 -04:00
Gabor Kiss-Vamosi
3eb06252e9 indev: fix lv_indev_enable 2019-08-26 09:05:30 +02:00
Gabor Kiss-Vamosi
a5d89e6ece Merge pull request #1179 from explora26/fix_readme
Fix the read input device example in README.md
2019-08-26 07:36:02 +02:00
Harry Jiang
c0180b05b4 Fix the read input device example in README.md 2019-08-26 13:28:04 +08:00
Gabor Kiss-Vamosi
248c3a51ea btnm: fix padding.bottom handling 2019-08-24 10:15:15 +02:00
embeddedt
94c95bc9e4 lv_table: fix memory leak when deleted (#1178) 2019-08-21 09:53:55 -04:00
seyyah
941409f3f9 docs/CODING_STYLE.md: add src prefix to path (#1174) 2019-08-19 09:24:06 -04:00
Themba Dube
7ea67301d7 Fix off-by-one error in lv_label_set_text_fmt 2019-08-18 16:00:57 -04:00
Themba Dube
d5d8eb5afd Merge remote-tracking branch 'origin/master' into dev-6.1 2019-08-18 15:25:59 -04:00
Gabor Kiss-Vamosi
bbb0d2f60e lv_roller: fix misalignment when an other obj is cliked while rolling 2019-08-16 16:43:05 +02:00
Gabor Kiss-Vamosi
71e950614f roller, ddlist and lv_label_get_letter_on fixes 2019-08-16 13:43:39 +02:00
embeddedt
c35c84c7d0 Guard uses of antialiasing option with LV_ANTIALIAS 2019-08-15 09:24:22 -04:00
Themba Dube
49afd3f46c Merge branch 'master' into dev-6.1 2019-08-11 12:58:34 -04:00
Gabor Kiss-Vamosi
7c90b84560 Update README.md 2019-08-07 09:42:02 +02:00
Gabor Kiss-Vamosi
5e8a3e180e Update README.md 2019-08-07 09:41:01 +02:00
Gabor Kiss-Vamosi
18eb517cff Update README.md 2019-08-07 09:39:35 +02:00
embeddedt
d4a22cb713 PlatformIO needs 6.0.2 in library.json 2019-08-06 09:33:05 -04:00
Themba Dube
ba1fba1f10 Add lv_label_set_text_fmt 2019-08-06 09:28:50 -04:00
Themba Dube
e53a30381a Merge branch 'master' into dev-6.1 2019-08-06 09:13:27 -04:00
embeddedt
9a69d142fe Update library.json 2019-08-06 08:58:15 -04:00
embeddedt
677e25397b Prevent chart contents from being drawn outside margin (#1169) 2019-08-06 08:47:45 -04:00
Themba Dube
5c735c0fc8 Do not add right padding to calendar label's x1 coordinate 2019-08-05 14:22:37 -04:00
Themba Dube
bdce05e20f Merge branch 'master' into dev-6.1 2019-08-05 13:55:16 -04:00
Themba Dube
7f653e6924 Merge branch 'master' of github.com:littlevgl/lvgl 2019-08-05 13:53:23 -04:00
Themba Dube
22aee91fc2 Fix two issues with keyboard
* Duplicate characters on long press
* Certain keys on the numeric keyboard were not auto-repeating
2019-08-05 13:52:39 -04:00
Jan Van Winkel
ebb29f09fb Corrected warning in theme material (#1168)
Corrected warning for unused variable hue2 in the function style_mod_edit of
the material theme in case color depth = 1.
2019-08-05 08:46:48 -04:00
Brian Pugh
d845cd73b0 Fix compiler warnings in lv_draw_img.c (#1166) 2019-08-04 12:33:46 -04:00
Gabor Kiss-Vamosi
1efff93dda draw_line: fix skew line draw error 2019-08-01 21:01:02 +02:00
Gabor Kiss-Vamosi
17111843a0 fonts: add missing symbols 2019-07-31 12:31:21 +02:00
embeddedt
1f4f333a01 Add library.json 2019-07-30 08:24:26 -04:00
embeddedt
3eeb104463 Update bug-report.md 2019-07-29 12:20:06 -04:00
Gabor Kiss-Vamosi
6bb86f0963 fix typo in comment 2019-07-29 16:19:30 +02:00
Gabor Kiss-Vamosi
8ad5aa36dd lv_label: disable hint on 'LV_LABEL_LONG_TXT_HINT 0' 2019-07-29 16:00:59 +02:00
Gabor Kiss-Vamosi
ec63826d53 lv_draw_label: fix hint 2019-07-29 15:56:20 +02:00
Gabor Kiss-Vamosi
ff853105d9 Revert "font: add const to lv_font_fmt_txt_dsc_t"
This reverts commit 8361a9c23d.
2019-07-29 15:42:54 +02:00
Gabor Kiss-Vamosi
8361a9c23d font: add const to lv_font_fmt_txt_dsc_t 2019-07-29 15:09:21 +02:00
Gabor Kiss-Vamosi
f5dca830c4 add relative include path for lvgl.h in built-in fonts 2019-07-29 14:06:39 +02:00
Gabor Kiss-Vamosi
6a65f6e5d9 add const in arrays of unscii font 2019-07-29 12:26:00 +02:00
Gabor Kiss-Vamosi
4f0393f704 font: make some arrays const 2019-07-29 12:20:55 +02:00
Gabor Kiss-Vamosi
7a73cb00a5 fix display_template example 2019-07-29 11:00:28 +02:00
Gabor Kiss-Vamosi
786e793634 theme_material: improve group style mod funvtions 2019-07-27 17:40:20 +02:00
Gabor Kiss-Vamosi
a9ec60b5cd lv_theme_nigh: update list button's style 2019-07-26 20:35:58 +02:00
Gabor Kiss-Vamosi
3cfe72c0fb lv_calendar_get_pressed_date: return NULL if not date pressed 2019-07-26 13:23:19 +02:00
Gabor Kiss-Vamosi
a4c6d511b7 theme_material: bar, slider, sw padding fixes 2019-07-26 13:22:55 +02:00
Gabor Kiss-Vamosi
fd6d7119f5 indev: seng LV_EVENT_CLICK on if the object is not dragged 2019-07-26 13:22:09 +02:00
Gabor Kiss-Vamosi
0ab5e6e65c theme zen: make scrollbar thinner 2019-07-25 11:36:42 +02:00
Gabor Kiss-Vamosi
6d2bbf2862 lv_canvas: disable anti alaising when drawing with transparent color to chroma keyed canvas 2019-07-25 11:36:42 +02:00
Themba Dube
2093b43045 Add LV_FS_MAX_PATH_LENGTH 2019-07-24 12:25:48 -04:00
Gabor Kiss-Vamosi
ebeeb28e85 Merge pull request #1159 from joltwallet/long_txt_6_1_clean
lv_txt.c long word text wrapping initial commit (refactor).
2019-07-24 06:12:30 +02:00
Gabor Kiss-Vamosi
5a9904fa12 lv_txt_get_next_line: step at least one to avoid infinite loops 2019-07-24 06:07:20 +02:00
Gabor Kiss-Vamosi
28505b09e6 update lv_conf_checker.h 2019-07-24 06:06:41 +02:00
Brian Pugh
29b145ffb2 lv_txt.c long word text wrapping initial commit (refactor). 2019-07-23 09:19:14 -07:00
embeddedt
bf2453ce0e Merge pull request #1158 from engSinteck/master
fix comment
2019-07-23 10:12:26 -04:00
rinaldo
c519b73ae2 fix comment 2019-07-23 10:52:53 -03:00
Gabor Kiss-Vamosi
5d44e66d42 format comments 2019-07-23 08:23:33 +02:00
Gabor Kiss-Vamosi
04be7cc6a6 kb: fix kb_ctrl_spec_map 2019-07-22 15:30:50 +02:00
Gabor Kiss-Vamosi
3977a33ac4 Merge branch 'master' into dev-6.1 2019-07-22 06:30:26 +02:00
Gabor Kiss-Vamosi
c5f69ca3b1 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-22 06:30:07 +02:00
Gabor Kiss-Vamosi
aa2f70fabc add lv_printf 2019-07-22 06:29:58 +02:00
Gabor Kiss-Vamosi
465bd3edd9 lv_list: fix comment 2019-07-22 06:29:34 +02:00
Gabor Kiss-Vamosi
639409b881 Merge pull request #1156 from vanwinkeljan/fix_disp_lv_inv_area
Pass disp->driver to rounder_cb in lv_inv_area
2019-07-20 06:27:01 +02:00
Jan Van Winkel
9401353ccb Pass disp->driver to rounder_cb in lv_inv_area
Pass pointer to disp->driver to rounder_cb in lv_inv_area instead of
pointer to disp_refr->driver as lv_inv_area is called when no refresh is
ongoing (lv_disp_drv_register).

Signed-off-by: Jan Van Winkel <jan.van_winkel@dxplore.eu>
2019-07-19 18:07:50 +02:00
Gabor Kiss-Vamosi
196da100b1 Update README.md 2019-07-19 12:09:55 +02:00
Gabor Kiss-Vamosi
24c17a9e5f Update README.md 2019-07-19 11:08:08 +02:00
Gabor Kiss-Vamosi
d1bc187ec6 Update README.md 2019-07-19 08:10:50 +02:00
Gabor Kiss-Vamosi
884b0b8025 Update README.md 2019-07-19 08:07:53 +02:00
Gabor Kiss-Vamosi
9f333d50d7 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-17 12:44:08 +02:00
Gabor Kiss-Vamosi
1c859fc3d6 lv_page: propagate the DRAG_START/END events too from scrollable to the bancground 2019-07-17 12:43:50 +02:00
Gabor Kiss-Vamosi
cd0d311531 fix sending of DRAG_BEGIN/END siganls and events 2019-07-17 12:43:10 +02:00
Gabor Kiss-Vamosi
33b4072138 Update CONTRIBUTING.md 2019-07-16 20:57:08 +02:00
Gabor Kiss-Vamosi
da3785240a Create CODING_STYLE.md 2019-07-16 20:53:43 +02:00
Gabor Kiss-Vamosi
ea00b24cdf add LV_STYLE_CREATE 2019-07-15 15:01:50 +02:00
Gabor Kiss-Vamosi
d7fd9eca35 Merge branch 'master' into dev-6.1 2019-07-15 14:56:55 +02:00
embeddedt
27db08eb23 Merge pull request #1151 from sie0x01/master
Fix header color format check in lv_img_decoder_built_in_info
2019-07-14 17:16:20 -04:00
Alexander Siebert
93357446a4 Fix header color format check in lv_img_decoder_built_in_info 2019-07-14 21:26:19 +02:00
Themba Dube
f55abd4e97 Merge remote-tracking branch 'origin/master' into dev-6.1 2019-07-13 21:27:18 -04:00
Gabor Kiss-Vamosi
a421547774 Merge pull request #1144 from BigHeadCreations/master
Fix typos
2019-07-10 15:05:01 +02:00
Gabor Kiss-Vamosi
4a036d8c28 declare lv_font_fmt_txt_cmap_type_t as uint8_t
it causes issue if the bitfield ar interpreted as signed
2019-07-10 14:51:59 +02:00
Timothy Pearson
362378b4e4 Fix typos 2019-07-10 11:56:36 +02:00
Themba Dube
0c8794d557 Merge branch 'master' into dev-6.1 2019-07-09 16:22:02 -04:00
Gabor Kiss-Vamosi
2cead48cd5 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-09 15:38:06 +02:00
Gabor Kiss-Vamosi
5312875972 LV_LAYOUT_GRID: fix 2019-07-09 15:37:50 +02:00
Gabor Kiss-Vamosi
fca1a1d434 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-09 08:19:26 +02:00
Gabor Kiss-Vamosi
1618930f9b update the fs porting example 2019-07-09 08:19:14 +02:00
Gabor Kiss-Vamosi
014850e73a make lv_fs_get_drv public 2019-07-09 08:18:58 +02:00
Gabor Kiss-Vamosi
1a7e7ef125 Merge pull request #1140 from C47D/horizontal_list
lv_list: Add list layout, implements #1138
2019-07-09 06:52:15 +02:00
embeddedt
f984c35875 Merge pull request #1141 from Jason-Cooke/patch-1
docs: fix typo
2019-07-08 17:38:31 -04:00
Jason Cooke
dec310a78d docs: fix typo 2019-07-09 09:34:46 +12:00
Gabor Kiss-Vamosi
a568a131d6 list: set/get lyout directly, not store in 'ext' 2019-07-08 17:24:30 +02:00
Gabor Kiss-Vamosi
5f9324cec5 Merge branch 'horizontal_list' of https://github.com/C47D/lvgl into C47D-horizontal_list 2019-07-08 17:18:29 +02:00
Gabor Kiss-Vamosi
40c86ea34e color_mix_2_alpha fixes 2019-07-08 13:10:16 +02:00
Gabor Kiss-Vamosi
df91d5bcad add lv_async to makefile 2019-07-08 13:02:48 +02:00
Gabor Kiss-Vamosi
2f29a9f361 fix compiler errors 2019-07-08 13:00:27 +02:00
Gabor Kiss-Vamosi
7bacac488e theme: solve warnings when some object types are disabled 2019-07-08 12:51:47 +02:00
Gabor Kiss-Vamosi
e792352f45 disable color_mix_2_alpha if no used 2019-07-08 12:51:12 +02:00
C47D
b4b4c764a3 [lv_list] Replace lv_list_layout_t with lv_layout_t 2019-07-07 23:41:03 -05:00
C47D
1dfded27d4 [lv_list] Set vertical layout as default 2019-07-07 18:50:35 -05:00
C47D
3654253472 [lv_list] Fix comments and add implementation of list layout 2019-07-07 13:30:19 -05:00
C47D
95149e466f [lv_list] Add list layout prototypes 2019-07-07 12:17:06 -05:00
Themba Dube
1d53e5eaec Move lv_obj_del_async to lv_obj.h 2019-07-06 15:48:18 -04:00
embeddedt
91f8755690 Rename async header guards
Co-Authored-By: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2019-07-06 15:47:43 -04:00
Themba Dube
5ae4b62f4d Initial addition of asynchronous callbacks 2019-07-06 15:47:36 -04:00
Themba Dube
8e9764532d Add unscii to lv_font.mk 2019-07-05 14:33:00 -04:00
Gabor Kiss-Vamosi
03f18260a9 lv_img_decoder_close: fix if closed after error 2019-07-05 15:16:02 +02:00
Gabor Kiss-Vamosi
9023588fef make the built-in image decoders public 2019-07-05 15:06:01 +02:00
Gabor Kiss-Vamosi
89bc24a7d9 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-05 07:49:01 +02:00
Gabor Kiss-Vamosi
f66b21433c Merge branch 'dev-6.1' of https://github.com/littlevgl/lvgl into dev-6.1 2019-07-05 07:48:22 +02:00
Gabor Kiss-Vamosi
c021de5968 lv_obj_set_opa_scale: update comment 2019-07-05 07:19:09 +02:00
Gabor Kiss-Vamosi
2dce4407c7 add LV_FONT_FMT_TXT_LARGE to support very large fonts 2019-07-05 06:11:49 +02:00
embeddedt
6989a9c797 Upgrade README button example to 6.0 2019-07-04 19:05:03 -04:00
Gabor Kiss-Vamosi
471ff8a5b5 Merge pull request #1128 from littlevgl/lv_img_buf_alloc
[v6.1] Add lv_img_buf_alloc and lv_img_buf_free functions
2019-07-04 06:39:14 +02:00
Themba Dube
55740d2a96 Move lv_img_buf_get_img_size to C file instead of inlining 2019-07-03 09:47:08 -04:00
Gabor Kiss-Vamosi
6c59216b46 Replace uintptr_t with lv_uintptr_t
uintptr_t is not supported by the 16 bit PIC's compiler (e.g. dsPIC33)
2019-07-03 10:07:12 +02:00
Gabor Kiss-Vamosi
3a8a004e8b Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-03 06:54:15 +02:00
Gabor Kiss-Vamosi
a78d0489f5 with line draw out ouf mask test 2019-07-03 06:54:10 +02:00
embeddedt
507c220d3f Merge pull request #1131 from pabigot/pr/20190702
lv_img_cache: fix buffer overrun
2019-07-02 19:18:24 -04:00
Peter A. Bigot
f2f024b610 lv_img_cache: fix buffer overrun
Reset the cache entry, not the pointer to the cache entry.
2019-07-02 17:59:28 -05:00
Gabor Kiss-Vamosi
4f77d8fc1a Update memory usage 2019-07-03 00:46:53 +02:00
Gabor Kiss-Vamosi
3eb14e198a Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-03 00:14:26 +02:00
Gabor Kiss-Vamosi
63b070164f use relative include path in built-in files 2019-07-03 00:10:38 +02:00
Gabor Kiss-Vamosi
6eb9975966 add LV_LOG_LEVEL_NONE 2019-07-03 00:10:19 +02:00
Gabor Kiss-Vamosi
0f24ef3666 lv_conf_template.h updates 2019-07-03 00:05:24 +02:00
Gabor Kiss-Vamosi
50d134fa8c remove user data set get from anims to allow LV_USE_USER_DATA 0 2019-07-03 00:05:12 +02:00
embeddedt
5b9d969fa4 Fix Flash memory estimate 2019-07-02 14:34:15 -04:00
Themba Dube
27155720d5 Switch from size_t to uint32_t 2019-07-02 14:26:52 -04:00
embeddedt
90a3edd218 Fix typo in README.md 2019-07-01 21:45:40 -04:00
Themba Dube
9ad51e529e Add API for retrieving raw image bitmap size 2019-07-01 21:38:01 -04:00
embeddedt
0dde2937d7 Merge pull request #1130 from amirgon/master
Add missing gc root
2019-07-01 18:18:05 -04:00
Amir Gonnen
b0870156c8 Merge branch 'dev-6.0' 2019-07-02 00:32:36 +03:00
Amir Gonnen
f7b8e5d415 Add missing gc root 2019-07-02 00:31:50 +03:00
Gabor Kiss-Vamosi
7b0b28f5a7 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-07-01 07:08:54 +02:00
Gabor Kiss-Vamosi
38cbc2fdea Update README.md 2019-07-01 06:23:34 +02:00
Themba Dube
28e321f223 Add lv_img_buf_alloc and lv_img_buf_free functions 2019-06-30 22:05:28 -04:00
embeddedt
86c28355ab Update links in README.md 2019-06-30 09:31:01 -04:00
Gabor Kiss-Vamosi
135c119b20 img_cache: fix memset 2019-06-30 06:01:18 +02:00
Gabor Kiss-Vamosi
3e77e0de8b update version 2019-06-30 05:54:06 +02:00
Gabor Kiss-Vamosi
a77b2ab408 lv_label: fix warnings 2019-06-30 05:52:35 +02:00
Gabor Kiss-Vamosi
9af89dd1b3 send FOCUS/DEFOCUS event if it was already sent by click focus too 2019-06-30 04:54:57 +02:00
Gabor Kiss-Vamosi
3c539d5751 Merge branch 'dev-6.0' 2019-06-28 23:55:41 +02:00
Gabor Kiss-Vamosi
683545f5f0 Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-06-28 23:55:29 +02:00
Gabor Kiss-Vamosi
f91479470b lv_disp_get_hor/ver_res: fix if no disp yet 2019-06-28 22:16:11 +02:00
Gabor Kiss-Vamosi
c1072a6289 lv_chart: fix axis tick postions 2019-06-28 22:15:23 +02:00
embeddedt
e2147d4be5 Update forum link 2019-06-28 16:02:28 -04:00
Gabor Kiss-Vamosi
d3d83f4991 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-28 21:29:26 +02:00
Themba Dube
72cf43a176 Fix inadvertant commenting of signal 2019-06-28 08:36:53 -04:00
Gabor Kiss-Vamosi
b4dfa5678f Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-28 06:02:01 +02:00
Themba Dube
0e71a34128 Disable Doxygen preprocessing 2019-06-27 18:32:35 -04:00
Themba Dube
2ecd0c4166 Merge branch 'dev-6.0' of github.com:littlevgl/lvgl into dev-6.0 2019-06-27 18:11:19 -04:00
Themba Dube
bbc9c886c6 Update Doxygen comments 2019-06-27 18:07:26 -04:00
embeddedt
fc42d02e97 Merge pull request #1123 from amirgon/dev-6.0
[v6.0] Fix uninitialized var warning
2019-06-27 14:57:24 -04:00
Amir Gonnen
03ac0284ae Fix uninitialized var warning 2019-06-27 21:44:20 +03:00
Gabor Kiss-Vamosi
925e1f9adf update lv_conf_chechker.h 2019-06-27 18:55:37 +02:00
Gabor Kiss-Vamosi
d433114cc2 Merge branch 'dev-6.0' 2019-06-27 18:46:48 +02:00
Gabor Kiss-Vamosi
a2e6589529 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-27 18:46:36 +02:00
Gabor Kiss-Vamosi
c15f7135cd lv_conf_template.h minor fixes 2019-06-27 18:46:28 +02:00
Gabor Kiss-Vamosi
7d278b1c09 Merge pull request #1122 from averne/conf_checker_syntax
lv_conf_checker syntax changes
2019-06-27 18:41:53 +02:00
Gabor Kiss-Vamosi
0bd3a9f4d0 fix conflicts 2019-06-27 18:34:49 +02:00
Gabor Kiss-Vamosi
f8924511d6 rename LV_TASK_PRIO_LAST -> _LV_TASK_PRIO_LAST 2019-06-27 18:25:23 +02:00
averne
d8745e3050 lv_conf_checker syntax changes 2019-06-27 16:46:54 +02:00
Gabor Kiss-Vamosi
a6b81d3da8 fixes when some features are disabled 2019-06-27 08:33:14 +02:00
Gabor Kiss-Vamosi
4c85125a87 update lv_conf_template.h 2019-06-27 08:20:36 +02:00
Gabor Kiss-Vamosi
9dcc47ec33 Merge branch 'vla' into dev-6.0 2019-06-27 08:19:38 +02:00
Gabor Kiss-Vamosi
8f962a0464 run clang-formatter 2019-06-27 07:16:15 +02:00
Gabor Kiss-Vamosi
e1989c5706 minor theme updates 2019-06-26 17:51:14 +02:00
Gabor Kiss-Vamosi
e1a4590fe3 indev: don't set drag_in_prog if not moved 2019-06-26 17:51:03 +02:00
Gabor Kiss-Vamosi
ac8e4af167 Merge branch 'vla' of https://github.com/littlevgl/lvgl into vla 2019-06-26 16:56:35 +02:00
Gabor Kiss-Vamosi
d99bd91fe6 lv_draw_buf minor formatting 2019-06-26 16:56:24 +02:00
Gabor Kiss-Vamosi
b04367c702 remove all VLA and replave with lv_draw_get_buf 2019-06-26 16:53:50 +02:00
Gabor Kiss-Vamosi
47bc4c91b7 remove all VLA and replave with lv_draw_get_buf 2019-06-26 16:51:10 +02:00
Gabor Kiss-Vamosi
ce29102dcf remove 2019-06-26 16:50:10 +02:00
Gabor Kiss-Vamosi
f806f8c526 add lv_draw_free_buf 2019-06-26 15:56:41 +02:00
Gabor Kiss-Vamosi
5b150e57ab Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-26 15:45:08 +02:00
Gabor Kiss-Vamosi
977b74332c night theme update 2019-06-26 15:45:01 +02:00
Gabor Kiss-Vamosi
071bf4cc4c add lv_draw_get_buf and use it for shadow draw 2019-06-26 15:42:54 +02:00
embeddedt
25c5c54b3b Merge pull request #1118 from amirgon/dev-6.0
[v6.0] add an option to define hard coded resolution
2019-06-26 09:42:01 -04:00
embeddedt
d823194378 Merge pull request #1120 from littlevgl/revert-1115-long_txt
Revert "Long txt wrapping refactor"
2019-06-26 09:38:18 -04:00
embeddedt
cba7dfc51b Revert "Long txt wrapping refactor" 2019-06-26 09:37:39 -04:00
Gabor Kiss-Vamosi
fda41d62a1 image decoder: minor fixes 2019-06-26 14:53:01 +02:00
Gabor Kiss-Vamosi
5168b5c44f add a pixel perfect built-in font 2019-06-26 14:52:41 +02:00
Amir Gonnen
1ae0a68e55 [v6.0] add an option to define hard coded resolution 2019-06-26 01:14:38 +03:00
Gabor Kiss-Vamosi
f62f839a25 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-25 18:27:22 +02:00
Gabor Kiss-Vamosi
b71b1f1e3a strip logs at compile time 2019-06-25 18:27:10 +02:00
Gabor Kiss-Vamosi
9d6cf5d2d8 change the prefix of mem_fill_cb and mem_blend_cb to gpu_ 2019-06-25 17:57:42 +02:00
Gabor Kiss-Vamosi
08101e6d6b LV_COLOR_SCREEN_TRANSP fixes if LV_COLOR_DEPTH != 32 2019-06-25 17:41:29 +02:00
Gabor Kiss-Vamosi
cd3d7248c5 fix warnging 2019-06-25 17:14:11 +02:00
Gabor Kiss-Vamosi
721d056803 Merge pull request #1115 from joltwallet/long_txt
Long txt wrapping refactor
2019-06-25 17:13:30 +02:00
Gabor Kiss-Vamosi
5e4bd1fd0c Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-25 15:14:57 +02:00
Gabor Kiss-Vamosi
4891f803fc minor API updates 2019-06-25 15:14:47 +02:00
embeddedt
ff657882bc Fix incorrect argument order in lv_canvas_copy_buf 2019-06-25 08:21:24 -04:00
embeddedt
c54003f014 Fix spelling errors in lv_port_disp_template.c 2019-06-24 13:50:13 -04:00
Brian Pugh
f56cd37f65 long_txt: moved first letter width update to more intuitive location 2019-06-24 09:36:38 -07:00
Brian Pugh
ab4c2bcd93 long_txt fixed incorrect width calculation of break characters. 2019-06-24 09:27:19 -07:00
Gabor Kiss-Vamosi
bba22bfa55 lv_img_decoder: remove palette local variable 2019-06-24 06:48:46 +02:00
Gabor Kiss-Vamosi
00008879b7 lv_ta: modify the order of values to be compatible with spinbox 2019-06-24 06:12:31 +02:00
Gabor Kiss-Vamosi
d66ff20df5 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-24 06:04:20 +02:00
Gabor Kiss-Vamosi
b856391c96 lv_bar: comemnt updates 2019-06-24 05:59:43 +02:00
Gabor Kiss-Vamosi
d67f84bc1a img_decoder: handle error messages as placeholder. 2019-06-24 05:59:31 +02:00
Gabor Kiss-Vamosi
189ca15d7c lv_img_decoder_open: return lv_res_t, save img data in dsc 2019-06-24 05:41:49 +02:00
Brian Pugh
d85efb9926 remove debugging lines 2019-06-23 16:22:51 -07:00
Brian Pugh
a88cacb71e Restore LV_TXT_LINE_BREAK_LONG_* defines in lv_conf_template.h and checker 2019-06-23 16:21:03 -07:00
Brian Pugh
2f95d4a0ca long text comment update 2019-06-23 16:15:14 -07:00
Brian Pugh
2f5ec6befe long text wrapping cleanup 2019-06-23 16:04:17 -07:00
Brian Pugh
44b2197721 Mostly working long text; need to fix dangling newline and remove debugging code 2019-06-23 12:25:17 -07:00
Brian Pugh
3227a2c780 Merge remote-tracking branch 'origin/dev-6.0' into long_txt 2019-06-23 12:07:09 -07:00
embeddedt
7f7034f50f Fix C++ issue reported in #1113
Fix conversion from void * to structure without cast
2019-06-23 12:48:58 -04:00
Brian Pugh
58ce1460d8 Merge remote-tracking branch 'origin/dev-6.0' into long_txt 2019-06-21 19:52:45 -07:00
Gabor Kiss-Vamosi
3c2accacb6 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-22 00:46:41 +02:00
Gabor Kiss-Vamosi
cd6f99c718 update gauge draw 2019-06-22 00:46:35 +02:00
embeddedt
d79df213a1 Merge pull request #1112 from amirgon/dev-6.0
Add lv_img_cache.h to lvgl.h
2019-06-21 17:48:11 -04:00
Amir Gonnen
bc030e7a2e Add lv_img_cache.h to lvgl.h
needs to be user accessible
2019-06-22 00:45:55 +03:00
Gabor Kiss-Vamosi
65d9dc503d Merge pull request #1111 from gsar-rez/dev-6.0
lv_draw_basic: use uint16_t for letter width
2019-06-21 23:16:30 +02:00
embeddedt
1bba2a803f Merge pull request #1110 from joltwallet/cache_mk_fix
Added missing lv_img_cache.c to makefile
2019-06-21 12:37:32 -04:00
embeddedt
ce7b183f50 Fix #1109 2019-06-21 12:37:00 -04:00
Brian Pugh
8e8271ffe6 Added missing lv_img_cache.c to makefile 2019-06-21 09:33:27 -07:00
Sergey Geraskin
ecd21d512d lv_draw_basic: use uint16_t for letter width 2019-06-21 21:33:05 +05:00
Brian Pugh
76e392edd5 Merge remote-tracking branch 'origin/dev-6.0' into long_txt 2019-06-21 09:10:26 -07:00
Gabor Kiss-Vamosi
4c1dbc63d2 lv_list_add -> lv_list_add_btn, event paramter removed from lv_list/win_add_btn 2019-06-21 15:26:28 +02:00
Gabor Kiss-Vamosi
ca1f21ad04 update lv_img_cache 2019-06-20 23:14:17 +02:00
Gabor Kiss-Vamosi
a9c818a6ef use typedef lv_coord_t lv_anim_value_t in lv_anim.h 2019-06-20 18:58:53 +02:00
Gabor Kiss-Vamosi
a63c5eb968 add lv_anim_value_t to lv_conf_templ.h 2019-06-20 18:45:23 +02:00
Gabor Kiss-Vamosi
68f28d1fda add lv_img_cache 2019-06-20 18:43:03 +02:00
Brian Pugh
d25650f561 long text wordwrapping refactor 2019-06-20 08:20:45 -07:00
Gabor Kiss-Vamosi
f5de02ad5a add VALUE_CHANGE events 2019-06-20 14:28:25 +02:00
Gabor Kiss-Vamosi
7a0ccd74a8 animation warning fixes 2019-06-20 06:26:24 +02:00
Gabor Kiss-Vamosi
e72ba9f11b animation warning fixes 2019-06-20 06:20:23 +02:00
Gabor Kiss-Vamosi
d84e977218 fix callback conventions 2019-06-20 06:19:07 +02:00
embeddedt
e48e0d8026 Merge pull request #1107 from amirgon/dev-6.0
[v6.0] Remove duplicated function declarations
2019-06-19 18:11:04 -04:00
Amir Gonnen
1c0f24cfbd Remove duplicated function declarations 2019-06-20 00:12:43 +03:00
embeddedt
1b33667642 Merge pull request #1106 from joltwallet/anim_macros
Fixed compilation issues when animations are disabled
2019-06-19 13:34:41 -04:00
Themba Dube
8173c427aa Keep typedef under TYPEDEFS comment 2019-06-19 13:33:43 -04:00
Gabor Kiss-Vamosi
c630493fc0 comment update 2019-06-19 18:41:29 +02:00
Gabor Kiss-Vamosi
b0b27515bd page: scrl_def_event_cb propage less events 2019-06-19 18:41:12 +02:00
Brian Pugh
625aaa25ff Fixed compilation issues when animations are disabled 2019-06-19 09:08:47 -07:00
Gabor Kiss-Vamosi
1844d060ab minor APU updates 2019-06-19 13:43:02 +02:00
Gabor Kiss-Vamosi
d80cc562d4 minor fixes 2019-06-19 00:40:20 +02:00
Gabor Kiss-Vamosi
6cfcc3fa55 minor API changes 2019-06-19 00:35:35 +02:00
Gabor Kiss-Vamosi
b9081cacef lv_group: fix typo in comment 2019-06-18 06:08:44 +02:00
Gabor Kiss-Vamosi
22e8ec2b01 Merge pull request #1104 from C47D/fix_group_wrap
[lv_group - v5.3] Init wrap on group creation and fix documentation of wrap setter
2019-06-18 06:07:37 +02:00
Gabor Kiss-Vamosi
c46f64c6d5 lv_img_decoder fix memory leak 2019-06-18 05:40:21 +02:00
C47D
648e2c4f17 [lv_group] Init wrap on group creation and fix documentation of wrap setter 2019-06-17 20:39:40 -05:00
Gabor Kiss-Vamosi
b9692ee798 add missing 'iniline' 2019-06-17 16:07:34 +02:00
Gabor Kiss-Vamosi
eacf2e5b93 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-17 16:05:38 +02:00
Gabor Kiss-Vamosi
3088849b63 minor API changes 2019-06-17 16:05:30 +02:00
Themba Dube
7fe458229d Minor fix when LV_LABEL_TEXT_SEL is 0 2019-06-16 14:41:58 -04:00
Gabor Kiss-Vamosi
abae15ab7c add '_cb' suffix to callback in lv_fs_drv_t 2019-06-16 10:01:26 +02:00
Gabor Kiss-Vamosi
51878e65dc add user data to lv_fs_drv_t 2019-06-16 09:48:41 +02:00
Gabor Kiss-Vamosi
760359fd5a lv_fs: add 'lv_fs_drv_t * drv' as first paramter to the dirver funnction 2019-06-16 09:24:10 +02:00
Gabor Kiss-Vamosi
b8c35308f2 minor fixes 2019-06-16 09:16:20 +02:00
Gabor Kiss-Vamosi
622c5deada minor fixes 2019-06-16 07:51:36 +02:00
Gabor Kiss-Vamosi
728c221986 regenerate fonts 2019-06-15 17:21:02 +02:00
Themba Dube
a92ffe7cde Fix use of NULL pointer in lv_draw_label 2019-06-14 11:34:22 -04:00
Gabor Kiss-Vamosi
5bb1653991 label hint: comments and formatting 2019-06-14 16:04:15 +02:00
Gabor Kiss-Vamosi
021420775f Merge branch 'dev-6.0' into hint 2019-06-14 15:23:34 +02:00
Gabor Kiss-Vamosi
4f07e9b4ab label hint updates 2019-06-14 15:20:46 +02:00
Gabor Kiss-Vamosi
9e34000dfc label hint updates 2019-06-14 15:15:20 +02:00
Gabor Kiss-Vamosi
10c46e73a8 label_draw hint experiments 2019-06-14 14:57:59 +02:00
Gabor Kiss-Vamosi
dd8fdafe3e lv_ta: minor fix to speed up adding texts 2019-06-14 14:26:10 +02:00
Gabor Kiss-Vamosi
89fae4458e add lv_canvas_set_palette() 2019-06-14 07:17:02 +02:00
Gabor Kiss-Vamosi
71f00017af remove LV_EVENT_SLECTED and use LV_EVENT_VALUE_CHANGED instead 2019-06-14 06:56:54 +02:00
Gabor Kiss-Vamosi
7cbc2d0e7f font_fmt_txt: cache fix 2019-06-14 06:24:02 +02:00
Gabor Kiss-Vamosi
f69dfce051 font_fmt_txt: cache the last letter and its glyph 2019-06-14 05:55:43 +02:00
Gabor Kiss-Vamosi
c52d8e8120 lv_txt: performance optimization 2019-06-14 05:47:40 +02:00
Gabor Kiss-Vamosi
0e41e9aacb simplify mem_fill 2019-06-13 19:25:23 +02:00
Gabor Kiss-Vamosi
3abcf52ad7 mbox: fix clicking with no buttons (#1101) 2019-06-13 05:13:34 +02:00
Gabor Kiss-Vamosi
bceb46b813 improve callback conventions 2019-06-12 23:10:54 +02:00
Gabor Kiss-Vamosi
ed69452c45 font: use binary search 2019-06-12 23:01:16 +02:00
Gabor Kiss-Vamosi
4139cd619b Update README.md 2019-06-11 15:54:13 +02:00
Gabor Kiss-Vamosi
a2c9c72186 add LV_ANIM_ON/OFF 2019-06-11 13:51:14 +02:00
Gabor Kiss-Vamosi
56b9893854 add cppchecker script 2019-06-11 06:33:53 +02:00
Gabor Kiss-Vamosi
288b972ce0 add LV_STYLE_XXX_MAIN if an object has only one style 2019-06-11 06:33:33 +02:00
Gabor Kiss-Vamosi
857d1734fd lv_roller: fix refactoring issue 2019-06-07 14:54:19 +02:00
Gabor Kiss-Vamosi
a1d2d631f0 Merge branch 'border_styles' into dev-6.0 2019-06-07 14:52:24 +02:00
Gabor Kiss-Vamosi
8254ee6661 rename lv_obj_adjust_coords to lv_obj_get_inner_coords 2019-06-07 14:52:14 +02:00
Gabor Kiss-Vamosi
5cc1548b83 lv_coord_t: use typdef in lv_conf.h 2019-06-07 00:08:48 +02:00
Gabor Kiss-Vamosi
f2ca0b15f3 lv_coord_t: add config option in lv_conf.h 2019-06-06 23:44:30 +02:00
Gabor Kiss-Vamosi
dbb5f23cd6 lv_indev: use event instead of signal in feedback function 2019-06-06 23:42:51 +02:00
Gabor Kiss-Vamosi
23f842e462 run clag-format 2019-06-06 06:05:40 +02:00
Gabor Kiss-Vamosi
dba4cebfea fix warnings 2019-06-06 06:04:15 +02:00
Gabor Kiss-Vamosi
81729dfd51 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-06 05:55:29 +02:00
Gabor Kiss-Vamosi
48e1efb6ef font folder restructure and makefile fixes 2019-06-06 05:55:17 +02:00
embeddedt
9396b097ab Minor fixes for Micropython binding (#1094)
* Enable/disable font declarations according to font macros
* Updated sed line which generates _LV_STR enum for Micropython binding
2019-06-05 19:06:58 -04:00
Amir Gonnen
b4d54c71d3 small fixes
Enable/disable font declarations according to font macros. This is required for Micropython otherwise we would get a declaration with a missing definition.

Updated sed line which generates _LV_STR enum for Micropython binding
2019-06-06 01:11:30 +03:00
Gabor Kiss-Vamosi
9139b58abc lv_draw_rect: fix underlow on border width 2019-06-05 18:36:38 +02:00
Gabor Kiss-Vamosi
0ef39ed144 lv_conf_template: formatting 2019-06-05 15:23:16 +02:00
Gabor Kiss-Vamosi
b29c84cc88 Merge branch 'font' of https://github.com/littlevgl/lvgl into dev-6.0 2019-06-05 15:19:12 +02:00
Gabor Kiss-Vamosi
3a2def1e76 font: update lv_conf_template.h 2019-06-05 15:16:51 +02:00
Gabor Kiss-Vamosi
62c531eec3 font: fix glyph_ids_size usage 2019-06-05 12:28:31 +02:00
Gabor Kiss-Vamosi
c54d2d2fd7 add built in fonts 2019-06-05 12:25:49 +02:00
Gabor Kiss-Vamosi
e01577845a draw tri: fix pixel overwrite with oapcity (from #1091) 2019-06-04 15:20:22 +02:00
Gabor Kiss-Vamosi
e8c14961df font: use .list_length property 2019-06-03 00:55:59 +02:00
Gabor Kiss-Vamosi
b0de5b9c0d update built in font converter 2019-06-02 23:27:27 +02:00
Gabor Kiss-Vamosi
33bb0d8004 calnvas: create draw function which uses lv_draw_... function 2019-06-02 20:35:33 +02:00
Gabor Kiss-Vamosi
366698bba3 font: add user data 2019-06-02 14:18:21 +02:00
Gabor Kiss-Vamosi
ff65ecd102 add a default font 2019-06-02 11:57:01 +02:00
Themba Dube
4075a7adfc Roller: do not draw rectangle highlight on borders 2019-06-01 21:37:25 -04:00
Themba Dube
ca01b558f7 Add lv_obj_adjust_coords() API for finding the object's "client area" 2019-06-01 21:37:04 -04:00
Gabor Kiss-Vamosi
f692e00ffe Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into font 2019-06-01 21:46:12 +02:00
Gabor Kiss-Vamosi
30419b3881 letter_draw: support bitmap stream 2019-06-01 21:46:05 +02:00
Gabor Kiss-Vamosi
a94866a115 font: update sample font 2019-05-31 18:52:32 +02:00
Gabor Kiss-Vamosi
df4aecc4c2 font: update sample font 2019-05-31 18:52:19 +02:00
Gabor Kiss-Vamosi
2dfaef4668 font: add LV_ATTRIBUTE_LARGE_CONST for bitmap 2019-05-31 16:42:14 +02:00
Gabor Kiss-Vamosi
23dc884f35 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-31 08:48:42 +02:00
Gabor Kiss-Vamosi
cd8bfa49e2 ta: fix cursor bilnk and password show time 2019-05-31 08:48:36 +02:00
Gabor Kiss-Vamosi
cf124e60ad use optimized triangle drawing if no opacity 2019-05-31 07:51:18 +02:00
Gabor Kiss-Vamosi
7884636b7c add triange optimization option 2019-05-31 07:40:09 +02:00
Gabor Kiss-Vamosi
8c6ef82947 Merge branch 'dev-6.0' into tri 2019-05-31 06:42:05 +02:00
Gabor Kiss-Vamosi
23e7e4e8e2 font: fix generated font file 2019-05-31 05:34:44 +02:00
Gabor Kiss-Vamosi
56d7b986d4 font: save the original generated font 2019-05-31 05:21:27 +02:00
embeddedt
f173875310 Fix bug related to allocation size in lv_img_decoder.c 2019-05-30 10:05:02 -04:00
Gabor Kiss-Vamosi
4cffb73357 font: start to inegrate 2019-05-29 06:40:19 +02:00
Gabor Kiss-Vamosi
b174398cb5 merge new font API 2019-05-29 05:31:03 +02:00
Gabor Kiss-Vamosi
7189a60866 font: use a common list length in the arrays of cmaps 2019-05-28 12:53:19 +02:00
Gabor Kiss-Vamosi
d94075ac92 font: add unicode_list_length and glyph_id_ofs_list_length 2019-05-28 12:10:50 +02:00
Gabor Kiss-Vamosi
0acabe460c font: add new types 2019-05-28 08:46:43 +02:00
Gabor Kiss-Vamosi
a5bbb5e651 font: add cmap type 2019-05-28 08:06:15 +02:00
Gabor Kiss-Vamosi
005a7954ca font: remove unicode_first/last 2019-05-28 07:57:22 +02:00
Gabor Kiss-Vamosi
bf667f747b font: remove box_x_ofs_min/max 2019-05-27 15:26:09 +02:00
Gabor Kiss-Vamosi
0aeff32442 font: fix comment for kern format 2019-05-27 15:13:59 +02:00
Gabor Kiss-Vamosi
5ebed4f24e anim: minor updates 2019-05-27 15:10:15 +02:00
Gabor Kiss-Vamosi
eba910be40 font: use signed types for kern values 2019-05-27 06:20:48 +02:00
Gabor Kiss-Vamosi
b6a86f31d7 update lv_anim.h 2019-05-27 05:47:59 +02:00
Gabor Kiss-Vamosi
d1e59483b4 update lv_anim.h 2019-05-27 05:46:19 +02:00
Gabor Kiss-Vamosi
f2afc18d6b anim: combint var and exec_cb set into lv_anim_set_var_and_cb 2019-05-27 05:42:34 +02:00
Gabor Kiss-Vamosi
72347d4bc1 remove LV_FONT_X4_SET 2019-05-26 19:31:01 +02:00
Gabor Kiss-Vamosi
1ed8207b5c font: add LV_FONT_X4_SET 2019-05-25 19:46:04 +02:00
Gabor Kiss-Vamosi
ceff78476b font: improve templates 2019-05-25 19:32:21 +02:00
Gabor Kiss-Vamosi
62ffe5ab94 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-25 17:05:49 +02:00
Gabor Kiss-Vamosi
d2e28abb79 indev: fix typo 2019-05-25 17:05:38 +02:00
Gabor Kiss-Vamosi
6093053240 lv_style_anim_get_user_data_ptr: fix recusrive call 2019-05-25 17:05:13 +02:00
Gabor Kiss-Vamosi
7cfbf5ed64 Merge pull request #1082 from amirgon/dev-6.0
Replace * by [] to pass array argument
2019-05-25 17:02:52 +02:00
Gabor Kiss-Vamosi
01f990061f indev inactivity: check encoder diff too 2019-05-25 16:53:56 +02:00
Gabor Kiss-Vamosi
b0fffaa55b LV_COLOR_TRANSP, LV_TA_CURSOR_BLINK_TIME and LV_TA_PWD_SHOW_TIME run time configurable 2019-05-25 16:27:36 +02:00
Amir Gonnen
2c7cdea1ee Replace * by [] to pass array argument
As discussed on #935 https://github.com/littlevgl/lvgl/issues/935#issuecomment-481550697
2019-05-25 16:43:57 +03:00
Gabor Kiss-Vamosi
5ef94e395d add font template 2019-05-24 14:31:20 +02:00
Gabor Kiss-Vamosi
6bde219324 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-24 06:27:14 +02:00
Gabor Kiss-Vamosi
d3d9fde245 unify lv_obj_..._ext_click_area... API 2019-05-24 06:26:56 +02:00
Gabor Kiss-Vamosi
225c2f727c improve font template 2019-05-24 06:24:31 +02:00
embeddedt
a3e88e1ecd Update lv_btnm_set_one_toggle docs (#1079) 2019-05-23 10:42:45 -04:00
Gabor Kiss-Vamosi
0f1e260155 LV_CHART_TYPE_AREA fixes 2019-05-22 06:34:14 +02:00
Gabor Kiss-Vamosi
8efb91d51d Merge branch 'joltwallet-func_cast_warn_fix' into dev-6.0 2019-05-21 15:56:34 +02:00
Gabor Kiss-Vamosi
5803fa6214 indev: minor fix 2019-05-21 15:56:27 +02:00
Gabor Kiss-Vamosi
9cb633981f Merge branch 'func_cast_warn_fix' of https://github.com/joltwallet/lvgl into joltwallet-func_cast_warn_fix 2019-05-21 15:53:48 +02:00
Gabor Kiss-Vamosi
d066004783 Merge pull request #1072 from joltwallet/indev_focus_fix
Indev focus fix
2019-05-21 15:52:24 +02:00
embeddedt
037e828c8a Fix lv_cont_get_fit_height using width instead
Reported in #1075
2019-05-21 09:52:18 -04:00
Gabor Kiss-Vamosi
5652a163c5 indev: use indev_obj_act for pointers too 2019-05-21 15:49:50 +02:00
Gabor Kiss-Vamosi
f42e6b82c4 Merge branch 'indev_focus_fix' of https://github.com/joltwallet/lvgl into joltwallet-indev_focus_fix 2019-05-21 15:29:42 +02:00
Brian Pugh
6212d0a507 lv_style.c change int16_t to lv_anim_value_t in animation exec cb 2019-05-20 18:38:24 -07:00
Brian Pugh
cd1ad6eb3a Wrapped remaining animation and edge_flash references in #if LV_USE_ANIMATION to save memory/space 2019-05-20 18:31:47 -07:00
Brian Pugh
cbb9c3f73b Fixed syntax error in lv_bar.c when animations are disabled 2019-05-20 10:04:36 -07:00
Brian Pugh
40576b5445 indev.c/h: Replaced CHECK_INDEV_RESET macro with function 2019-05-20 09:52:18 -07:00
Brian Pugh
9b38d455ab renamed indev_obj_focused to indev_obj_act. Improved related documentation/formatting 2019-05-20 09:42:31 -07:00
Brian Pugh
3cc2043fd7 fixed lv_ta.c anim type mismatch 2019-05-20 09:32:13 -07:00
Brian Pugh
a6f0afde4c change some int16_t types to lv_anim_value_t for animation functions. use LV_USE_ANIMATION macros to remove unused variables when animation capabilities is disabled 2019-05-20 09:22:09 -07:00
Gabor Kiss-Vamosi
ba3e7d1da6 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-20 15:52:22 +02:00
Gabor Kiss-Vamosi
9d70ccc226 fix typo 2019-05-20 15:51:31 +02:00
Gabor Kiss-Vamosi
d658eef2a0 fix typo
lv_font_symbol_30_basic -> lv_font_symbol_30
2019-05-20 15:50:21 +02:00
embeddedt
22c2bc4453 Do not return non-void value in lv_style_anim_create 2019-05-20 07:50:39 -04:00
Gabor Kiss-Vamosi
0d2b61f0f3 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-20 12:12:06 +02:00
Gabor Kiss-Vamosi
45a29c1b88 fix typo 2019-05-20 12:11:59 +02:00
Gabor Kiss-Vamosi
1c2d71a0f8 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-20 07:20:54 +02:00
Gabor Kiss-Vamosi
ba9f0cf9bb chart COLUMN draw speed optmize 2019-05-20 07:19:00 +02:00
Gabor Kiss-Vamosi
fd834ae60f Merge pull request #1071 from ali-rostami/patch-2
defining lv_group_remove_all_objs
2019-05-20 06:45:32 +02:00
Gabor Kiss-Vamosi
e8605a52ed font: update fmt_txt 2019-05-20 06:40:00 +02:00
Brian Pugh
7bbe91512a indev.c: indev_obj_focused initial commit to correctly reset indev query when a callback changed the currently focused object and deletes the old one. Only tested on keypad indev, other indev types may need a similar fix re-using the indev_obj_focused variable 2019-05-19 10:56:34 -07:00
Ali Rostami
aed05f26e4 Update src/lv_core/lv_group.h
Co-Authored-By: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2019-05-19 13:55:34 +04:30
Ali Rostami
87979b5645 Update src/lv_core/lv_group.c
Co-Authored-By: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2019-05-19 13:55:24 +04:30
Gabor Kiss-Vamosi
22195f3455 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-19 11:04:03 +02:00
Gabor Kiss-Vamosi
b0a4fd7dad calendar: optimize cover check in the design function 2019-05-19 10:56:21 +02:00
Gabor Kiss-Vamosi
b6d24040bf font thinking 2019-05-19 10:51:20 +02:00
Gabor Kiss-Vamosi
0be212c26c Merge pull request #1068 from amirgon/dev-6.0
Add missing 'log level' argument to log callback
2019-05-19 10:37:47 +02:00
Ali Rostami
90b8bc9597 declaring the lv_group_remove_all_objs function. 2019-05-19 10:03:57 +04:30
Ali Rostami
8c5c8ed82a defining lv_group_remove_all_objs
`lv_group_remove_all_objs` is a function for removing all objects from a group and making it free of objects.
2019-05-19 10:00:59 +04:30
Brian Pugh
f28efdd9f3 Change int32_t to int16_t in animation functions to fix warnings 2019-05-18 18:14:21 -07:00
embeddedt
62ea055785 Merge pull request #1067 from joltwallet/anim_guard_fix
Fix LV_OBJX_DEF_ANIM_TIME guards
2019-05-18 19:26:34 -04:00
Amir Gonnen
89a2856d6e Add missing 'log level' argument to log callback 2019-05-18 22:54:10 +03:00
Brian Pugh
80760c4669 Fix LV_OBJX_DEF_ANIM_TIME guards 2019-05-18 11:44:50 -07:00
embeddedt
b1622166b4 Merge pull request #1066 from amirgon/dev-6.0
Fixed include path. Fixed typos
2019-05-18 08:38:12 -04:00
Gabor Kiss-Vamosi
f7bc8c2328 theme: update group styles in lv_theme_set_current 2019-05-18 14:03:44 +02:00
Gabor Kiss-Vamosi
83d64fed42 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-18 13:48:37 +02:00
Gabor Kiss-Vamosi
234fa34254 add lv_log_print_g_cb_t 2019-05-18 13:48:27 +02:00
Gabor Kiss-Vamosi
d8edbb8a41 minor formatting 2019-05-18 13:48:13 +02:00
Gabor Kiss-Vamosi
077a645a92 font: add kerning tables 2019-05-18 13:39:44 +02:00
Gabor Kiss-Vamosi
432e87bfdf minor formatting 2019-05-18 11:21:20 +02:00
Gabor Kiss-Vamosi
f16561295b add LV_EVENT_CB_DECLARE 2019-05-18 11:21:16 +02:00
Gabor Kiss-Vamosi
d197ae53e5 Merge pull request #1061 from joltwallet/count_children_recursive
lv_obj_count_children_recursive
2019-05-18 09:48:41 +02:00
Amir Gonnen
42b546a6d7 Fixed include path. Fixed typos 2019-05-18 01:31:29 +03:00
embeddedt
eb1e28e1f5 Merge pull request #1065 from joltwallet/lv_img_decoder_no_fs
lv_img_decoder.c Wrap filesystem calls in LV_USE_FILESYSTEM macro
2019-05-17 12:44:17 -04:00
Brian Pugh
cb6a4527a9 lv_img_decoder.c Wrap filesystem calls in LV_USE_FILESYSTEM macro 2019-05-17 09:12:30 -07:00
Brian Pugh
2f4654b009 Merge remote-tracking branch 'origin/dev-6.0' into count_children_recursive 2019-05-17 08:47:18 -07:00
Gabor Kiss-Vamosi
ca19c7d92f minor formatting 2019-05-17 16:59:12 +02:00
Gabor Kiss-Vamosi
1ef0c197cd built-in img decodder read line bug fix 2019-05-17 09:03:53 +02:00
Gabor Kiss-Vamosi
b842db91aa lv_ll_move_before: bugfix 2019-05-17 08:42:28 +02:00
Gabor Kiss-Vamosi
1f334ba88b mbox: close anim bugfix 2019-05-17 08:29:51 +02:00
Gabor Kiss-Vamosi
c136382be3 add lv_task_create_basic 2019-05-17 08:29:38 +02:00
Gabor Kiss-Vamosi
e525c08a0c rename lv_anim_del_custom to lv_anim_custom_del 2019-05-17 08:01:22 +02:00
Gabor Kiss-Vamosi
b926fd4966 add lv_task_set_cb 2019-05-17 07:58:47 +02:00
Gabor Kiss-Vamosi
4c623cae44 add lv_anim_del_custom 2019-05-17 07:50:00 +02:00
Gabor Kiss-Vamosi
c5ba739627 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-17 07:40:10 +02:00
Gabor Kiss-Vamosi
e421e08c2f remove unused lv_img_decoder_set_custom 2019-05-17 07:39:56 +02:00
embeddedt
bd15b805db Apply fix from #1064 to dev-6.0
Fix mixup of SB and SCRL styles in lv_list_get_style
2019-05-16 19:42:50 -04:00
embeddedt
292ca72c03 Merge pull request #1064 from CrogST/patch-1
Fix swapping of SB and SCRL styles in lv_list_get_style function
2019-05-16 19:41:26 -04:00
Gabor Kiss-Vamosi
322211b1ed Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-16 15:31:17 +02:00
Gabor Kiss-Vamosi
04df148f0c add comments to lv_img_decoder 2019-05-16 15:30:52 +02:00
CrogST
8273499a8c Error in lv_list_get_style function
SB and SCRL styles were mixed up. Let me now if it is ok.
2019-05-16 14:30:54 +03:00
Gabor Kiss-Vamosi
c1b8c2f522 imgbtn: follow image decder changes 2019-05-16 10:27:45 +02:00
Gabor Kiss-Vamosi
6cba2fbab0 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-15 18:58:13 +02:00
Gabor Kiss-Vamosi
5a712931ef lv_page: fix vertical scrollbar position 2019-05-15 18:58:01 +02:00
Gabor Kiss-Vamosi
de824833a0 remove LV_USE_USER_DATA_SINGE to LV_USE_USER_DATA 2019-05-15 18:51:31 +02:00
Gabor Kiss-Vamosi
78c527ee4f remove LV_USE_USER_DATA_MULTI 2019-05-15 18:50:38 +02:00
Gabor Kiss-Vamosi
c46ff018ed Merge branch 'imgdec' into dev-6.0 2019-05-15 18:41:42 +02:00
Gabor Kiss-Vamosi
862a4c3496 Merge branch 'anim' into dev-6.0 2019-05-15 18:39:17 +02:00
Gabor Kiss-Vamosi
569bbdf058 remove lv_style_anim_t and replace it with simply lv_anim_t 2019-05-15 18:27:26 +02:00
Gabor Kiss-Vamosi
648d42ec94 fix screen copy 2019-05-15 07:36:13 +02:00
Gabor Kiss-Vamosi
c8d1413ece Update lv_obj.c 2019-05-15 07:36:00 +02:00
Gabor Kiss-Vamosi
6a265896a2 fix screen copy 2019-05-15 07:34:19 +02:00
Gabor Kiss-Vamosi
eebe04bd95 lv_key_t: fix format 2019-05-15 06:46:27 +02:00
Gabor Kiss-Vamosi
fe8157cc88 add LV_EVENT_KEY 2019-05-15 06:43:16 +02:00
Gabor Kiss-Vamosi
5af101a1eb add inline anim set functions 2019-05-15 06:15:12 +02:00
Gabor Kiss-Vamosi
e31b6a156e move lv_img_decoder to lv_draw 2019-05-15 05:22:03 +02:00
Gabor Kiss-Vamosi
f706de5517 img_decoder is working (not fully tested yet) 2019-05-14 15:45:03 +02:00
Gabor Kiss-Vamosi
72fb15c3fb comment updates 2019-05-14 07:19:56 +02:00
Gabor Kiss-Vamosi
5afe9c119a lv_indev fix 2019-05-14 07:19:00 +02:00
Gabor Kiss-Vamosi
3a78360b62 lv_indev: do not leave edit mode manually on POINTER release 2019-05-14 06:47:30 +02:00
Gabor Kiss-Vamosi
d58c8663d4 start to reqork the image decoder interface 2019-05-14 06:34:20 +02:00
Brian Pugh
85ead39b6a initial commit of lv_obj_count_children_recursive and of lv_ll_get_len 2019-05-13 09:06:01 -07:00
Gabor Kiss-Vamosi
a3bfdb240e define LV_KEY_... as enum 2019-05-13 05:50:27 +02:00
Gabor Kiss-Vamosi
dab545e770 Update lv_canvas.c 2019-05-12 08:21:32 +02:00
Gabor Kiss-Vamosi
7f30fb0058 font update 2019-05-11 07:58:37 +02:00
Gabor Kiss-Vamosi
1489629b61 ddlist and roller: fix to save the selected option by encoder 2019-05-10 15:12:41 +02:00
Gabor Kiss-Vamosi
77d43069e0 Merge pull request #951 from ali-rostami/master
add LV_CHART_MODE_CIRCULAR feature to chart objects.
2019-05-10 14:58:20 +02:00
Gabor Kiss-Vamosi
5b1f0caa8d Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-10 07:42:17 +02:00
Gabor Kiss-Vamosi
1cd4ac4aef clag-format: incraese ColumnLimit to 120 2019-05-10 07:42:08 +02:00
Gabor Kiss-Vamosi
8b29a88b58 lv_btn: fix warning 2019-05-10 07:41:32 +02:00
Gabor Kiss-Vamosi
3079d2c6e6 Merge pull request #1058 from joltwallet/user_data_ptr
lv_obj_get_user_data_ptr
2019-05-09 20:02:23 +02:00
Brian Pugh
7631d41c88 lv_obj_user_data_ptr initial commit. Also deleted an unused variable in lv_indev to prevent compiler warnings 2019-05-09 09:02:11 -07:00
Gabor Kiss-Vamosi
523170297e fix a bug in rendering order (scrollbar coverd sibling obejcts too) 2019-05-09 15:55:01 +02:00
Ali Rostami
0442ffe6cb keep the pressed_date after release
we shouldn't lose the pressed_date after the release and press lost
2019-05-09 10:21:50 +04:30
Gabor Kiss-Vamosi
aa4897cdc5 minor fixes 2019-05-09 06:38:25 +02:00
Gabor Kiss-Vamosi
512eb05a22 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-09 06:04:54 +02:00
Gabor Kiss-Vamosi
424bff48f5 lv_obj_move_fore/background: move only if not there now 2019-05-09 06:04:45 +02:00
Gabor Kiss-Vamosi
c31ab099f7 add MASK_AREA_DEBUG option 2019-05-09 06:04:03 +02:00
Gabor Kiss-Vamosi
0f6f2accb6 draw_triange/line optimization: return if the coords are out of the mask 2019-05-09 06:03:25 +02:00
Gabor Kiss-Vamosi
1ddf659631 indev encoder: fix when an object is deleted in the event function 2019-05-08 16:08:05 +02:00
Gabor Kiss-Vamosi
861e090023 minor fixes 2019-05-08 12:04:02 +02:00
Gabor Kiss-Vamosi
e7e24697ea Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-05-07 12:15:14 +02:00
Gabor Kiss-Vamosi
0b31110d3e minor fixes 2019-05-07 12:15:02 +02:00
Gabor Kiss-Vamosi
be84581bbc lv_anim: add typedef int16_t lv_anim_value_t 2019-05-07 06:30:38 +02:00
Gabor Kiss-Vamosi
45c4970fc6 letter draw optimization 2019-05-07 05:40:01 +02:00
Gabor Kiss-Vamosi
1a70d98ba4 lv_roller: fix if clikced while animated 2019-05-04 07:53:31 +02:00
Gabor Kiss-Vamosi
f4c0055c5a add lv_obj_move_foreground/background 2019-05-03 19:25:58 +02:00
Gabor Kiss-Vamosi
18d59bef01 add lv_font_dummy.h to comment on it 2019-05-03 17:03:37 +02:00
Gabor Kiss-Vamosi
f6c60b8204 lv_draw_letter: fix coloe of pixelswith LV_OPA_COVER and LV_OPA_TRANSP 2019-05-03 15:43:56 +02:00
Gabor Kiss-Vamosi
73ef86f9a9 lv_obj_del: fix 2019-05-03 15:22:59 +02:00
Gabor Kiss-Vamosi
0c7d9b96f7 font: minor formatting 2019-05-01 18:10:44 +02:00
Gabor Kiss-Vamosi
469157ebd9 font: update kern space format 2019-05-01 18:08:56 +02:00
Gabor Kiss-Vamosi
cc97e114c2 font: add comments 2019-05-01 17:44:22 +02:00
Gabor Kiss-Vamosi
864c970ba3 font: add kerning support 2019-05-01 16:43:32 +02:00
Gabor Kiss-Vamosi
ed1632f464 Merge branch 'dev-6.0' into font 2019-04-30 15:04:06 +02:00
Gabor Kiss-Vamosi
b7850e2584 fix warnings 2019-04-30 15:03:52 +02:00
Gabor Kiss-Vamosi
9f216a55be event: make delete in event more stabile 2019-04-28 21:53:14 +02:00
Gabor Kiss-Vamosi
1e4fd8fdfb event fixes: crashed when the obj was deleted in nested events 2019-04-28 17:26:18 +02:00
Gabor Kiss-Vamosi
12ee3b3504 kb: set default height to parent size / 2 2019-04-27 20:15:55 +02:00
Gabor Kiss-Vamosi
d8a17c483a font: separate int. and fract. advanced width 2019-04-27 19:43:10 +02:00
Gabor Kiss-Vamosi
c7e6af03e6 Merge branch 'dev-6.0' into font 2019-04-27 19:37:24 +02:00
Gabor Kiss-Vamosi
cc48391333 font: remove monospace 2019-04-27 19:37:19 +02:00
Gabor Kiss-Vamosi
0892cbadc4 kb: set the size to screen by default 2019-04-27 19:26:49 +02:00
Gabor Kiss-Vamosi
5243d235a6 lv_task: add user data and pass lv_task_t as task_cb parameter 2019-04-27 11:32:13 +02:00
Gabor Kiss-Vamosi
15c27c8a9b kb: event fix 2019-04-27 11:01:14 +02:00
Gabor Kiss-Vamosi
630199d9a3 kb: event fix 2019-04-27 10:59:22 +02:00
Gabor Kiss-Vamosi
b623eabb0a font: ignore glyphs with NULL dsc 2019-04-27 10:58:34 +02:00
Gabor Kiss-Vamosi
5321b9b62e make the basics of the new font system work 2019-04-24 17:28:38 +02:00
Gabor Kiss-Vamosi
926490502b Merge branch 'dev-6.0' into font 2019-04-24 14:51:11 +02:00
Gabor Kiss-Vamosi
8745d16ba9 Update lv_canvas.c 2019-04-24 06:26:42 +02:00
Gabor Kiss-Vamosi
8dc2b36bf7 lv_canvas_mult_buf: fix with LV_COLOR_16_SWAP 2019-04-24 06:26:03 +02:00
Gabor Kiss-Vamosi
4b657eb07b rename LV_TXT_ENC_ISO8859-1 to ..._ASCII 2019-04-24 06:13:50 +02:00
Gabor Kiss-Vamosi
2edf8f4aab font rework 2019-04-24 05:44:15 +02:00
Gabor Kiss-Vamosi
dc9f8baf0e fix conflicts 2019-04-23 15:59:10 +02:00
Gabor Kiss-Vamosi
4e6aac2157 font rework 2019-04-23 15:56:59 +02:00
Gabor Kiss-Vamosi
1e5f690a45 lv_txt: do not call lv_font_get_width twice 2019-04-23 15:09:37 +02:00
Gabor Kiss-Vamosi
ef0f8b29cf Update lv_txt.c 2019-04-23 15:08:12 +02:00
Gabor Kiss-Vamosi
514e2baaca make user data and callback name more consistent (Fixes #1036) 2019-04-23 14:56:40 +02:00
Ali Rostami
d7661e8bbc minor fixes 2019-04-23 09:51:14 +04:30
Gabor Kiss-Vamosi
abd081da30 add LV_TXT_ENC to lv_conf.h and ISO8859-1 support 2019-04-23 06:42:26 +02:00
Gabor Kiss-Vamosi
9cd7de8ccd Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-23 05:59:46 +02:00
Gabor Kiss-Vamosi
5e60002a9b lv_win: remove unused header style (Fixes #1041) 2019-04-23 05:59:19 +02:00
embeddedt
3860c115d4 Merge pull request #1042 from amirgon/dev-6.0
fix lv_conf.h include
2019-04-22 15:40:00 -04:00
Amir Gonnen
4a663c42d4 fix lv_conf.h include 2019-04-22 21:49:22 +03:00
embeddedt
2fbc082633 Merge pull request #1039 from seyyah/patch-1
Add lv_anim_user_data_t
2019-04-22 09:51:24 -04:00
seyyah
ca19f8f4ff Add lv_anim_user_data_t
May be related to: Commit - [add user data where is was missing](e2cfba7c9f)
2019-04-22 16:14:29 +03:00
Gabor Kiss-Vamosi
9e3162080f ddlist and roller fixes 2019-04-22 10:17:21 +02:00
Gabor Kiss-Vamosi
56fcd2d151 fix memory corruptions due to animation audates 2019-04-22 09:20:04 +02:00
Gabor Kiss-Vamosi
e2cfba7c9f add user data where is was missing 2019-04-22 08:45:07 +02:00
Gabor Kiss-Vamosi
2d5183b05d lv_kb: make controll buttons work on click instead of press 2019-04-22 06:00:50 +02:00
Gabor Kiss-Vamosi
4b43adaad1 lv_conf_template.h and lv_conf_checker.h update 2019-04-22 05:50:24 +02:00
Gabor Kiss-Vamosi
b4a632116e Merge pull request #1027 from seyyah/dev-6.0
Added tab button position LEFT and RIGHT
2019-04-22 05:47:03 +02:00
Gabor Kiss-Vamosi
ac89e880a7 font: start to rework 2019-04-22 05:21:49 +02:00
embeddedt
c9c635ca3a Merge pull request #1037 from joltwallet/aa
Fix Antialiasing compiler warning
2019-04-21 08:56:29 -04:00
Brian Pugh
e49de22941 lv_draw_line: Fixed a warning by wrapping unused antialiasing variables in LV_ANTIALIAS 2019-04-20 18:34:56 -07:00
embeddedt
9c708d6f4d Merge pull request #1032 from littlevgl/t_minor_fixes
Minor fixes for compiler warnings/-Werrors
2019-04-20 09:09:06 -04:00
Themba Dube
e9d2191463 Remove lv_area_ext_is_point_on 2019-04-20 09:07:54 -04:00
Themba Dube
95fc629aa5 Rename "dot" union in lv_label 2019-04-20 09:05:36 -04:00
Gabor Kiss-Vamosi
8675a345b4 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-20 06:37:24 +02:00
Gabor Kiss-Vamosi
b5898a750e ddlist: fiy scrollable width 2019-04-20 06:37:06 +02:00
Gabor Kiss-Vamosi
1b1df9f931 Merge pull request #1030 from upbeat27/ddlist_fix
ddlist: fix animation complete not always clearing selection highlight
2019-04-20 06:29:12 +02:00
Gabor Kiss-Vamosi
755f68c87b remove HOVER events 2019-04-20 06:24:00 +02:00
Gabor Kiss-Vamosi
cdb6f1fdd7 lv_btnm: add comments 2019-04-20 06:04:38 +02:00
Themba Dube
d6ef684867 Fix accidental removal of newlines from lv_conf_template.h 2019-04-19 15:23:41 -04:00
Themba Dube
7419900508 Minor fixes for compiler warnings/-Werrors 2019-04-19 15:20:51 -04:00
seyyah
4454683ff0 FIXME note added 2019-04-19 11:35:02 +03:00
Gabor Kiss-Vamosi
5353dae027 lv_kb: fix sending APPLY and CANCEL events 2019-04-19 07:37:57 +02:00
Gabor Kiss-Vamosi
850693a840 ddlist label align fixes 2019-04-19 07:28:48 +02:00
Gabor Kiss-Vamosi
9fc1423ef7 ddlist: fix setting of width settings 2019-04-19 07:15:39 +02:00
Gabor Kiss-Vamosi
a983dfa80a lv_tabview: realaign the tabview on every new tab 2019-04-19 06:40:06 +02:00
Gabor Kiss-Vamosi
5d65def464 Merge branch 'dev-6.0' of https://github.com/seyyah/lvgl into seyyah-dev-6.0 2019-04-19 06:25:43 +02:00
Gabor Kiss-Vamosi
0ad121865c lv_page: improve repostion of new children 2019-04-19 06:10:01 +02:00
Gabor Kiss-Vamosi
8f7e01fc1a add reserved bits to lv_obj_t 2019-04-19 05:57:05 +02:00
Gabor Kiss-Vamosi
82c57e0ceb Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-19 05:46:13 +02:00
Gabor Kiss-Vamosi
a2cb299c0c add LV_EVENT_DELETE 2019-04-19 05:46:02 +02:00
Gabor Kiss-Vamosi
702ca86879 Merge pull request #1020 from joltwallet/ram_optim
RAM optimizations
2019-04-19 05:45:13 +02:00
Gabor Kiss-Vamosi
beeedfc1b2 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-19 05:32:31 +02:00
Gabor Kiss-Vamosi
dfb12a31f9 send DRAG_BEGINT/END events 2019-04-19 05:32:21 +02:00
Gabor Kiss-Vamosi
a3c08e9985 Merge pull request #1019 from canardos/dev-6.0
add lv_obj_set_user_data function
2019-04-19 05:21:42 +02:00
Josh
b477a14fdf ddlist: fix animation issues
The wrong animation function was used for the delete, and so the animation was never deleted.
Must force animation callback on delete, so that the correct selection highlighting is shown.
2019-04-18 12:26:40 -07:00
Josh
2abf55f4c4 ddlist: fix animation complete not always clearing selection highlight 2019-04-18 10:46:16 -07:00
Themba Dube
d0550b7feb Include lv_conf.h in lv_area.h 2019-04-18 13:03:13 -04:00
Themba Dube
1181c07b76 Merge branch 'dev-6.0' of github.com:littlevgl/lvgl into dev-6.0 2019-04-18 11:36:30 -04:00
Themba Dube
6446f78aeb Fix uniniitalized variable during display initialization (detected by Valgrind) 2019-04-18 11:35:57 -04:00
seyyah
a9036eb6b1 Tab button position LEFT and RIGHT: indic consistency 2019-04-18 18:28:15 +03:00
seyyah
b75688b317 Merge branch 'dev-6.0' of github.com:seyyah/lvgl into dev-6.0 2019-04-18 18:00:26 +03:00
seyyah
857a4e1406 Added tab button position LEFT and RIGHT 2019-04-18 18:00:11 +03:00
Gabor Kiss-Vamosi
ad1162922f Merge pull request #1026 from upbeat27/dev-6.0
lv_group: fix lv_group_del not removing group from the group linked list
2019-04-18 09:51:33 +02:00
canardos
5a88709a5c Change assignment to memcpy 2019-04-18 14:12:30 +08:00
Gabor Kiss-Vamosi
41fc80e96b text_sel: minor fixes and renames 2019-04-18 07:11:43 +02:00
Gabor Kiss-Vamosi
9a711d9e88 add LV_LABEL_TEXT_SEL_OFF 0xFFFF 2019-04-18 06:45:45 +02:00
Gabor Kiss-Vamosi
cf21115029 triangle drawing optimzation 2019-04-18 05:58:09 +02:00
Josh
84d79bcf56 lv_group: fix lv_group_del not removing group from the group linked list 2019-04-17 16:00:31 -07:00
Gabor Kiss-Vamosi
2e0c8ca8f5 Merge branch 'dev-6.0' into tri 2019-04-17 15:15:23 +02:00
Gabor Kiss-Vamosi
1ba23100f6 update lv_conf_checker.h 2019-04-17 15:14:54 +02:00
Gabor Kiss-Vamosi
b9af3b0383 triangle draw optimization test 2019-04-17 15:14:09 +02:00
Gabor Kiss-Vamosi
6148d498a9 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-17 15:00:45 +02:00
Gabor Kiss-Vamosi
0811096f21 lv_mem: fix comment typos 2019-04-17 15:00:31 +02:00
Gabor Kiss-Vamosi
de0037e7fe Merge pull request #1023 from joltwallet/lv_label_anim
lv_label pause at beginning of LV_LABEL_LONG_ROLL animation.
2019-04-17 06:13:45 +02:00
Brian Pugh
ff6b6725a5 lv_label: Added initial delay to LV_LABEL_LONG_ROLL_CIRC 2019-04-16 08:50:35 -07:00
Brian Pugh
d7b193d3fc lv_label: change to . Repeated header documentation in c file. 2019-04-15 22:03:12 -07:00
BrianPugh
c401481509 lv_obj.h re-added missing #if LV_USE_OBJ_REALIGN in lv_obj_t 2019-04-15 21:55:22 -07:00
Brian Pugh
eb70f39e42 lv_label pause at beginning of LV_LABEL_LONG_ROLL animation. Also expose the pause amount to lv_conf 2019-04-15 18:08:54 -07:00
BrianPugh
2c5b3fe223 Merge branch 'dev-6.0' into ram_optim 2019-04-15 07:56:08 -07:00
Gabor Kiss-Vamosi
619403ce48 Merge pull request #996 from GreyMS/dev-6.0
Realization of extended clickable area.
2019-04-15 16:08:59 +02:00
Brian Pugh
b3f60153cf lv_label: fixed missing dot_tmp_alloc copy on create 2019-04-14 14:49:42 -07:00
Brian Pugh
30dcf68351 lv_label: change magic number 4 to sizeof(char *) 2019-04-14 13:52:54 -07:00
Brian Pugh
3d77137178 lv_label: dynamically allocate space for dots if necessary. If the required dots storage space is 4 or less bytes, directly stores them in the extended data object 2019-04-14 11:18:31 -07:00
Brian Pugh
50edf4e1f8 Fixed lv_label selection start/end setters to allow the 0th index. 2019-04-14 09:50:02 -07:00
Brian Pugh
f40ee380c8 Optimized bitfields in lv_btn and lv_label. In lv_label, changed selection fields from int to uint16. Because of this change, added getters/setters. Added LV_LABEL_SELECTION_EN option in lv_conf to enable/disable the selection fields 2019-04-14 09:47:45 -07:00
Gabor Kiss-Vamosi
522d59861e solve conflicts 2019-04-14 16:01:48 +02:00
canardos
991f892a98 add lv_obj_set_user_data function 2019-04-14 13:24:12 +08:00
Gabor Kiss-Vamosi
9603ddfbe5 Merge pull request #1016 from joltwallet/preload_direction
lv_preload.c Add feature to allow setting whether the animation is pl…
2019-04-13 18:44:43 +02:00
embeddedt
2b26b9dc51 Merge pull request #1018 from canardos/dev-6.0
Remove legacy control codes
2019-04-13 07:57:30 -04:00
canardos
29daec0caf Remove legacy control codes 2019-04-13 14:56:47 +08:00
Brian Pugh
bbb93d315e lv_preload: abbreviate "animation" and "direction" to "anim" and "dir" 2019-04-12 07:57:16 -07:00
Brian Pugh
610499c278 lv_preload uncomment lv_anim_del in animation create 2019-04-12 07:48:00 -07:00
Gabor Kiss-Vamosi
1cbbd1c59b change memcpy to lv_style_copy 2019-04-12 07:27:53 +02:00
Gabor Kiss-Vamosi
ff6fb2611a Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-12 07:22:48 +02:00
Gabor Kiss-Vamosi
6284e3a21b lv_list: check the return value of btn events 2019-04-12 07:22:37 +02:00
Brian Pugh
3764d7a6ba lv_preload.c Add feature to allow setting whether the animation is played in forward/reverse. Changes the default spinner behavior from counterclockwise to clockwise. 2019-04-11 09:26:11 -07:00
Gabor Kiss-Vamosi
cf943b16e1 Merge pull request #1015 from canardos/const_styles
Allow const lv_style_t objects
2019-04-11 15:46:57 +02:00
Gabor Kiss-Vamosi
a4d4d59346 lv_page: use lv_style_copy instead of memcpy 2019-04-11 15:41:17 +02:00
Gabor Kiss-Vamosi
580d1e111d lv_list: fix lv_list_get_btn_next/prev 2019-04-11 08:11:13 -04:00
Themba Dube
b6df62a62a lv_list: check actual object type instead of relying on signal handler 2019-04-11 08:09:33 -04:00
canardos
e6b7afccd2 Allow const lv_style_t objects 2019-04-11 19:59:55 +08:00
Sergei
5ccf31793e Merge pull request #3 from littlevgl/dev-6.0
Dev 6.0
2019-04-11 14:01:16 +03:00
Gabor Kiss-Vamosi
6a3c7d2b95 lv_list: fix lv_list_get_btn_next/prev 2019-04-11 06:57:19 +02:00
Gabor Kiss-Vamosi
84ea78c1c1 Merge pull request #1014 from littlevgl/list_signal_cb
lv_list: check actual object type instead of relying on signal handler
2019-04-11 06:52:14 +02:00
Gabor Kiss-Vamosi
2b0cdc853f lv_conf_templ: fix typo 2019-04-11 06:34:25 +02:00
Gabor Kiss-Vamosi
0dd723183f lv_conf_templ: disable LV_USE_EXT_CLICK_AREA by default 2019-04-11 06:31:24 +02:00
Gabor Kiss-Vamosi
00f2df74dc lv_conf_temp remove unused LV_USE_EXTENDED_CLICK_AREA... defines 2019-04-11 06:28:31 +02:00
Gabor Kiss-Vamosi
3606ea2588 ext_click_area: run-time area test and renames 2019-04-11 06:26:41 +02:00
Gabor Kiss-Vamosi
12125248c6 Merge branch 'dev-6.0' of https://github.com/GreyMS/lvgl into GreyMS-dev-6.0 2019-04-11 05:46:48 +02:00
Gabor Kiss-Vamosi
2f0921161f Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-11 05:16:50 +02:00
Gabor Kiss-Vamosi
6c9ed1969f lv_disp_buf_init: rename size paramter 2019-04-11 05:16:31 +02:00
Themba Dube
2345e0073d lv_list: check actual object type instead of relying on signal handler 2019-04-10 19:52:11 -04:00
GreyMS
de12c95a80 Fixed typos and include added. 2019-04-10 19:01:47 +03:00
embeddedt
e3244b7a37 Merge pull request #1013 from seyyah/patch-2
Follow to transtion (lv_btnm_set_map_array -> lv_btnm_set_map)
2019-04-10 10:52:59 -04:00
seyyah
0bffba11d6 Follow to transtion (lv_btnm_set_map_array -> lv_btnm_set_map) 2019-04-10 17:44:18 +03:00
GreyMS
9af730c6cb Fixed usage of _lv_indev_proc_t 2019-04-10 15:34:05 +03:00
GreyMS
b59e058f8d Merge branch 'pr/2' into dev-6.0 2019-04-10 14:14:58 +03:00
Gabor Kiss-Vamosi
3d4c784c3b use [] in array argument of 'set' functions (#935) 2019-04-10 08:40:58 +02:00
Gabor Kiss-Vamosi
fb1ca3fb87 rename lv_obj_get_..._func to .._cb (#1011) 2019-04-10 06:40:55 +02:00
Gabor Kiss-Vamosi
427d11e7f5 fix conflicts 2019-04-10 06:27:40 +02:00
Gabor Kiss-Vamosi
d3b494b030 lv_kb: fix typo 2019-04-10 06:25:44 +02:00
Gabor Kiss-Vamosi
b0f3949b3c lv_chart: add _array postfix 2019-04-10 06:23:30 +02:00
Gabor Kiss-Vamosi
c4f8e5f8be run clang format 2019-04-10 06:23:30 +02:00
Gabor Kiss-Vamosi
c2653174f5 lv_kb, lv_btnm: add _array postfix if the parameter is an array 2019-04-10 06:23:30 +02:00
Themba Dube
28d24a3d4d Keep relative offset between pointer and dragged object identical 2019-04-09 16:57:33 -04:00
Themba Dube
ea7c82f478 Fix warnings reported in #1008 2019-04-09 16:18:04 -04:00
Gabor Kiss-Vamosi
5edb1dd38a Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-09 15:24:25 +02:00
Gabor Kiss-Vamosi
ef0e0f812f lv_win, lv_tabview: set screen size by default 2019-04-09 15:24:20 +02:00
Gabor Kiss-Vamosi
b5c7960255 Merge pull request #1003 from littlevgl/obj_drag_dir
Enhance drag logic
2019-04-09 15:05:46 +02:00
Themba Dube
e8b081b015 Release lv_task_handler mutex if no task needs to be run 2019-04-09 09:05:25 -04:00
Themba Dube
67ff40afd0 Enable LV_DRAG_DIR_ALL by default in object initializer
It was previously enabled by `lv_obj_set_drag`.
2019-04-09 09:00:41 -04:00
embeddedt
3d7641733e Merge pull request #1009 from joltwallet/indev_release_fix
lv_indev button release fix
2019-04-09 08:56:16 -04:00
Brian Pugh
d691e72b40 lv_indev: check object delete after sending LV_EVENT_SHORT_CLICKED on group button release 2019-04-08 21:04:17 -07:00
Themba Dube
fc7c7ec619 Merge remote-tracking branch 'origin/dev-6.0' into obj_drag_dir 2019-04-08 13:51:13 -04:00
Themba Dube
36d4807a69 Add back scrolling optimization 2019-04-08 13:50:58 -04:00
Gabor Kiss-Vamosi
e5c699ba23 solve conflicts 2019-04-08 16:39:14 +02:00
Gabor Kiss-Vamosi
75f42fde2f fix conflicts 2019-04-08 14:40:41 +02:00
Themba Dube
0c3a18e1fe Call lv_obj_set_pos if both drag directions are enabled 2019-04-08 08:38:25 -04:00
Gabor Kiss-Vamosi
e47750864e rename LV_GROUP_KEY to LV_KEY 2019-04-08 14:36:20 +02:00
Gabor Kiss-Vamosi
8976b118f8 Merge pull request #998 from joltwallet/indev_esc
lv_indev.c LV_GROUP_KEY_ESC sends LV_EVENT_CANCEL
2019-04-08 05:59:33 +02:00
Gabor Kiss-Vamosi
dff8eb9a3c Merge pull request #1005 from manison/patch/fix-retval
Fix return values from lv_img_dsc_get_info
2019-04-08 05:57:27 +02:00
Ali Rostami
c7d582e403 declare lv_chart_set_update_mode fucntion 2019-04-06 16:30:01 +04:30
Ali Rostami
65b83dd1c1 define lv_chart_set_update_mode function 2019-04-06 16:28:49 +04:30
Themba Dube
2b0e378c73 Merge branch 'dev-6.0' into obj_drag_dir 2019-04-05 14:52:35 -04:00
Themba Dube
231ad935f4 Merge branch 'dev-6.0' of github.com:littlevgl/lvgl into dev-6.0 2019-04-05 14:52:15 -04:00
Themba Dube
9c8296edf9 Fix off-by-one error in lv_calendar 2019-04-05 14:52:04 -04:00
Themba Dube
cbd32d9f28 Update drag logic to consider the movement of a pointer device as drag
It no longer requires the object to have been moved before drag starts.
2019-04-05 14:17:51 -04:00
Themba Dube
5db6b73725 Change lv_drag_direction_t to lv_drag_dir_t and update documentation 2019-04-05 08:48:39 -04:00
manison
b3f4bd1c46 only close file if it was successfully opened and return error from lv_img_dsc_get_info on file operation failure 2019-04-05 14:10:38 +02:00
manison
912b014b03 fix return value type 2019-04-05 10:55:30 +02:00
Gabor Kiss-Vamosi
c58fd97cf7 gpu fill fix 2019-04-05 06:57:51 +02:00
Gabor Kiss-Vamosi
31ff0fd3ff Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-04-05 06:55:46 +02:00
Gabor Kiss-Vamosi
6df6614016 update GPU inteface with 2D fill 2019-04-05 06:55:35 +02:00
Gabor Kiss-Vamosi
264eacd0bc Merge pull request #1002 from littlevgl/table_click
Disable clickable property on tables
2019-04-05 06:24:47 +02:00
Gabor Kiss-Vamosi
248521da53 lv_symbol_defs.h: replace macros with an enum with symbol names (#1000) 2019-04-05 06:16:07 +02:00
Gabor Kiss-Vamosi
0cff8c7963 Merge branch 'dev-6.0' into indev_esc 2019-04-05 05:47:54 +02:00
Themba Dube
789e7a3a12 Add lv_obj_set_drag_dir and lv_obj_get_drag_dir 2019-04-04 21:51:13 -04:00
Themba Dube
d85c138137 Disable clickable property on tables 2019-04-04 21:12:38 -04:00
embeddedt
5f76d98311 Update README.md 2019-04-04 11:27:55 -04:00
Gabor Kiss-Vamosi
d6088f2b06 update lv_conf_checker.h 2019-04-04 16:54:54 +02:00
Gabor Kiss-Vamosi
1eca54616a fixes after clang formatting 2019-04-04 16:44:16 +02:00
melnse
3f2b6bb685 Added defines of extended clickable area to conf template and to conf checker. 2019-04-04 14:34:29 +03:00
Sergei
2794b786d7 Merge pull request #1 from littlevgl/dev-6.0
lv_list: don't sent CLICK event if dragged. fix #997
2019-04-04 14:19:50 +03:00
melnse
bc8cd2068e Realized alternative version of extended clickable area: "USE_LV_EXTENDED_CLICKABLE_AREA_TINY". It doesn't store extended coordinates, but calculates them on the fly. Also ext_paddings changed from lv_area to two uint8_t in both versions. 2019-04-04 14:14:40 +03:00
Brian Pugh
d4bfeb2bed lv_indev.c have LV_GROUP_KEY_ESC send an LV_EVENT_CANCEL signal 2019-04-03 22:36:10 -07:00
Gabor Kiss-Vamosi
66585f508f remove astyle files becasue they are replaced with clang-format 2019-04-04 07:16:24 +02:00
Gabor Kiss-Vamosi
ba2160042a run clang format 2019-04-04 07:15:40 +02:00
Gabor Kiss-Vamosi
80e2a1d5d5 add clang-format file 2019-04-04 07:15:09 +02:00
Gabor Kiss-Vamosi
a8c8b6b7a2 add /* clang-format off */ to lv_conf_templ.h 2019-04-04 07:12:48 +02:00
Gabor Kiss-Vamosi
18809da818 Merge branch 'indev_runtime' into dev-6.0 2019-04-04 07:10:43 +02:00
Gabor Kiss-Vamosi
f19f8a9b5c minor fix 2019-04-04 07:10:34 +02:00
Gabor Kiss-Vamosi
41ee89e6d2 renames according to the new lv_conf_templ 2019-04-04 07:07:17 +02:00
Gabor Kiss-Vamosi
889c21b639 update lv_Conf_templ.h 2019-04-04 07:06:24 +02:00
Gabor Kiss-Vamosi
aec671dc67 lv_list: don't sent CLICK event if dragged. fix #997 2019-04-04 05:09:29 +02:00
melnse
6e047e6d27 Fixed typos, changed macro to static function. 2019-04-03 20:09:33 +03:00
melnse
787dd591c1 Realization of extended clickable area.
Suitable for small lonely objects, which must be clicked.
For activation add "#define USE_LV_EXTENDED_CLICK_AREA 1" to lv_conf.h
2019-04-03 19:34:58 +03:00
Gabor Kiss-Vamosi
1d986e13df lv_btnm, lv_kb: replace 'const char ** x' with const char * x[] 2019-04-03 15:47:36 +02:00
embeddedt
c55c36c366 Merge pull request #994 from joltwallet/doc_fixes
Few comment corrections
2019-04-02 12:14:13 -04:00
Brian Pugh
75f5849a73 Few comment corrections 2019-04-02 09:12:00 -07:00
Gabor Kiss-Vamosi
08722f5f8d fix compile error 2019-04-02 12:16:15 +02:00
Gabor Kiss-Vamosi
84ace67720 move INDEV settings from lv_conf.h to the indev driver 2019-04-02 12:15:35 +02:00
Gabor Kiss-Vamosi
38c55377c6 merge master 2019-04-02 06:49:05 +02:00
Gabor Kiss-Vamosi
af61c96802 add LV_LABEL_LONG_ROLL_CIRC 2019-04-02 06:44:50 +02:00
Gabor Kiss-Vamosi
bb20b8ca1a rounder_cb bug fix 2019-04-02 05:59:23 +02:00
embeddedt
103f6c3041 Assume display is not rotated by default 2019-03-31 19:15:37 -04:00
Gabor Kiss-Vamosi
09f362a1ed add disp. rotate config for disp_drv 2019-03-30 06:23:41 +01:00
Gabor Kiss-Vamosi
9515e800d4 minor comment fix 2019-03-30 06:04:56 +01:00
Gabor Kiss-Vamosi
eb6daa51d7 move antialiasing and refr_task to the display level 2019-03-30 06:03:23 +01:00
Gabor Kiss-Vamosi
438ae64502 fixes for #935 2019-03-29 16:13:28 +01:00
Gabor Kiss-Vamosi
e902f0955f Merge branch 'ta_selection' into dev-6.0 2019-03-29 05:33:54 +01:00
Gabor Kiss-Vamosi
a4a5bef8ca Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-28 06:12:01 +01:00
Gabor Kiss-Vamosi
1cd983941e make LV_TXT_UTF8 always enabled (remove the defeine checks) 2019-03-28 06:11:50 +01:00
Themba Dube
272ee1b466 Fix potentially uninitialized variable in lv_label_is_char_under_pos 2019-03-27 20:46:21 -04:00
Themba Dube
5919cf5613 Draw selection rectangle with line height rather than font height 2019-03-27 19:19:50 -04:00
Themba Dube
97089da7f5 Add lv_ta_set_sel_mode/lv_ta_get_sel_mode 2019-03-27 19:17:48 -04:00
Themba Dube
f5609b6bce Remove leftover inclusion of stdio.h 2019-03-27 19:12:46 -04:00
Themba Dube
e63e1f230a Properly handle selection on multi-line text areas 2019-03-27 19:11:04 -04:00
Themba Dube
3b747718ea More text area fixes 2019-03-27 18:36:57 -04:00
Themba Dube
0a4e8979ec Add lv_ta_clear_selection and fix a few bugs 2019-03-27 17:22:44 -04:00
Themba Dube
b14ed6288a Add lv_ta_get_selection 2019-03-27 17:12:55 -04:00
Themba Dube
82a095b94a Add ability to select text on the text area 2019-03-27 16:39:37 -04:00
Gabor Kiss-Vamosi
87d27a5665 Merge pull request #986 from upbeat27/master
lv_ddlist: fix original selected option not restoring on escape
2019-03-27 21:17:16 +01:00
Themba Dube
b8fece6e0a Add back prototype for lv_canvas_mult_buf
It appears to have been accidentally removed in aaad794085.
2019-03-27 15:52:13 -04:00
Josh
6468d925ed lv_ddlist: fix original selected option not restoring on escape 2019-03-27 09:23:43 -07:00
embeddedt
c1e98d3f37 Update all-other-issues.md 2019-03-27 10:39:42 -04:00
Gabor Kiss-Vamosi
cd47fd72f6 minor zen theme fix 2019-03-27 08:37:08 +01:00
Gabor Kiss-Vamosi
ed9a1f3df5 improve circle anti-alaisins 2019-03-27 08:36:55 +01:00
Gabor Kiss-Vamosi
881d6c060f lv_kb: add lv_kb_def_event_cb (makes possible overwrite the default behavior) 2019-03-27 00:48:35 +01:00
Gabor Kiss-Vamosi
20961a4dda Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-27 00:05:27 +01:00
Gabor Kiss-Vamosi
5be450a3aa lv_canvas: handle alpha in rotate 2019-03-27 00:05:15 +01:00
Gabor Kiss-Vamosi
41754236f8 lv_draw_buf_set/get_px_color/alpha add support all color formats 2019-03-27 00:04:57 +01:00
Gabor Kiss-Vamosi
0464444502 ddlist: fox wrong option selection on click 2019-03-27 00:01:09 +01:00
embeddedt
e8a3f3dd6a Merge pull request #984 from amirgon/dev-6.0
bugfix in lv_canvas_get_img return value
2019-03-26 15:53:14 -04:00
Amir Gonnen
0f43ee23de bugfix in lv_canvas_get_img return value 2019-03-26 21:40:08 +02:00
Gabor Kiss-Vamosi
cf05e2c336 Merge pull request #983 from amirgon/dev-6.0
comment out unimplemented function
2019-03-26 15:37:48 +01:00
Gabor Kiss-Vamosi
9347165a5a add lv_canvas_get_img() 2019-03-26 15:35:45 +01:00
Amir Gonnen
21eab152a6 Merge branch 'dev-6.0' of https://github.com/amirgon/lvgl into dev-6.0 2019-03-26 00:25:28 +02:00
Amir Gonnen
e575d4728b Changed 'typedef enum' to 'typedef uint8_t' 2019-03-26 00:23:36 +02:00
Amir Gonnen
5456418d54 Changed 'typedef enum' to 'typedef uint8_t' 2019-03-26 00:19:38 +02:00
Amir Gonnen
dccdf1e5a4 comment out unimplemented function 2019-03-25 23:40:08 +02:00
Gabor Kiss-Vamosi
a979a445ac Merge pull request #971 from manison/patch/fix-multiple-keypad-events
Fix keypad event might be generated multiple times
2019-03-25 15:53:44 +01:00
manison
516a69e218 refactor multiple keypad event generation as per review 2019-03-25 14:17:23 +01:00
manison
b262381c58 Merge branch 'dev-6.0' into patch/fix-multiple-keypad-events 2019-03-25 13:47:12 +01:00
Gabor Kiss-Vamosi
aaad794085 lv_canvas_rotate: update API 2019-03-24 19:35:10 +01:00
Gabor Kiss-Vamosi
8890589dc1 remove debug printf 2019-03-24 19:34:52 +01:00
Gabor Kiss-Vamosi
37e873fa09 Merge pull request #980 from littlevgl/move_canvas
Move lv_canvas_get_px/lv_canvas_set_px to lv_draw_img.c
2019-03-24 19:14:04 +01:00
Gabor Kiss-Vamosi
347f7db20d Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-24 18:42:19 +01:00
Gabor Kiss-Vamosi
770d1e08e1 lv_ddlist: fix wrong selection on click 2019-03-24 18:42:11 +01:00
Gabor Kiss-Vamosi
06da93f43b Merge pull request #973 from IvanShugov/master
Add support for chart axes ticks and value labels and X axis label
2019-03-24 16:42:41 +01:00
embeddedt
d4559a0f39 Move lv_canvas_get_px/lv_canvas_set_px to lv_draw_img.c 2019-03-24 09:52:24 -04:00
Gabor Kiss-Vamosi
a402f8258d update lv_conf_checker.h 2019-03-24 07:31:56 +01:00
Gabor Kiss-Vamosi
f7f1b5c5ea Merge branch 'dev-6.0' into master 2019-03-24 07:25:32 +01:00
Gabor Kiss-Vamosi
221e269ccb roller and ddlist fixes 2019-03-24 07:16:13 +01:00
Gabor Kiss-Vamosi
ec787b92ba Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-24 06:23:42 +01:00
Gabor Kiss-Vamosi
fa3947576d Merge branch 'master' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-24 06:23:30 +01:00
Gabor Kiss-Vamosi
298cf31340 Merge pull request #978 from littlevgl/ddlist_selected
Make drop down list more aesthetic
2019-03-24 06:13:41 +01:00
Gabor Kiss-Vamosi
13e7f162a0 lv_ddlist: fixes for scrollbar visibility 2019-03-24 06:11:09 +01:00
Gabor Kiss-Vamosi
7cf2b8f1c2 lv_chart fixes 2019-03-24 05:56:00 +01:00
Gabor Kiss-Vamosi
7c2abad471 Merge branch 'master' of https://github.com/ali-rostami/lvgl into ali-rostami-master 2019-03-24 05:25:52 +01:00
Gabor Kiss-Vamosi
2cbffaeaea Merge pull request #977 from littlevgl/new_tabview_scroll
Only start scrolling tabview horizontally if page is at edge
2019-03-24 04:58:44 +01:00
user-0
36b47ba98d FIX margin get function documentation 2019-03-24 00:07:16 +02:00
user-0
81696b85d0 FIXED: Add support for chart axes ticks and value labels / chart label. 2019-03-23 23:59:12 +02:00
user-0
db4f4f0360 FIXED/UPDATED: Add support for chart axes ticks and value labels / chart label. 2019-03-23 22:21:02 +02:00
Themba Dube
5565516e96 Fix off-by-one error in chart line drawing 2019-03-23 09:33:34 -04:00
Themba Dube
d479927e96 Make ddlist more aesthetic 2019-03-23 09:20:41 -04:00
Themba Dube
9c71696373 Merge branch 'dev-6.0' into new_tabview_scroll 2019-03-23 09:06:26 -04:00
embeddedt
e22beaea22 Remove merge information in README.md 2019-03-23 08:59:23 -04:00
Themba Dube
a8dc1afe2c Lock out horizontal swiping while vertical scrolling is in progress 2019-03-22 21:38:05 -04:00
Themba Dube
f0e423a71e Remove debug information 2019-03-22 21:28:57 -04:00
Themba Dube
25539b6606 Merge branch 'new_tabview_scroll' of github.com:littlevgl/lvgl into new_tabview_scroll 2019-03-22 21:27:01 -04:00
Gabor Kiss-Vamosi
f2af4b725a Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-23 01:20:09 +01:00
Gabor Kiss-Vamosi
e1e6813eb1 fix typo in lv_port_..._template files 2019-03-23 01:19:57 +01:00
Gabor Kiss-Vamosi
13033c28d8 lv_page: fix scrl left padding 2019-03-23 01:05:41 +01:00
Themba Dube
e1f9462818 Add debug info to tabview 2019-03-22 19:19:03 -04:00
Themba Dube
6e48776abc Merge branch 'dev-6.0' into new_tabview_scroll 2019-03-22 19:11:52 -04:00
Themba Dube
de04b39165 Remove use of 'const' in lv_btnm_set_one_toggle 2019-03-22 19:11:37 -04:00
Themba Dube
e32b40ecf1 Only start scrolling tabview horizontally if page is at edge 2019-03-22 19:08:21 -04:00
Gabor Kiss-Vamosi
5149d36c1f Merge pull request #966 from littlevgl/btnm_one_toggle
Add lv_btnm_set_one_toggle/lv_btnm_get_one_toggle functions
2019-03-22 22:57:30 +01:00
Gabor Kiss-Vamosi
0150586db7 fix conflicts 2019-03-22 22:39:02 +01:00
user-0
36b212d4dc TUNE: Add support for chart axes ticks and value labels / chart label. 2019-03-22 22:49:09 +02:00
Gabor Kiss-Vamosi
22f84314a4 Rename bug_report.md to bug-report.md 2019-03-22 21:28:18 +01:00
Themba Dube
03b3070871 Update issue templates 2019-03-22 13:58:19 -04:00
Themba Dube
73ab6b3e2f Add back missing bug report template 2019-03-22 13:57:35 -04:00
embeddedt
2f86a67e71 Add other issues template 2019-03-22 13:28:36 -04:00
embeddedt
1b12ee50bb Merge pull request #976 from littlevgl/issue-templates
Add bug report issue template
2019-03-22 13:28:26 -04:00
embeddedt
ee4e61ed68 Add bug report issue template 2019-03-22 13:23:55 -04:00
user-0
46d5debc7a FIXED: Add support for chart axes ticks and value labels / chart label. 2019-03-22 19:20:58 +02:00
user-0
087ab979d6 Add support for chart axes ticks and value labels. Add support for chart axis X label. 2019-03-22 17:24:40 +02:00
manison
f972eb54aa fix keypad event might be generated multiple times if the event handler returns LV_RES_INV 2019-03-22 08:46:06 +01:00
Gabor Kiss-Vamosi
0005f4c88e add lv_indev_wait_release to KEYPAD and ENCODER too 2019-03-22 06:35:17 +01:00
Themba Dube
f5aa26f7e1 Update one toggle feature based on review comments 2019-03-21 13:42:03 -04:00
Themba Dube
e7b4bef8ac Add lv_btnm_set_one_toggle/lv_btnm_get_one_toggle functions 2019-03-20 18:33:33 -04:00
Gabor Kiss-Vamosi
47093d057e Merge branch 'img_rotate' into dev-6.0 2019-03-20 16:01:09 +01:00
Gabor Kiss-Vamosi
c9cf1edc07 Merge branch 'insert' into dev-6.0 2019-03-20 16:00:20 +01:00
Gabor Kiss-Vamosi
e8a05aaa65 add LV_EVENT_INSERT and use it in Text Area 2019-03-20 15:59:41 +01:00
Gabor Kiss-Vamosi
12a5e16a75 add table styles to deafult and template themes 2019-03-20 14:53:59 +01:00
Gabor Kiss-Vamosi
a7735b85e9 canvas rotate: comment update 2019-03-20 09:15:56 +01:00
Gabor Kiss-Vamosi
fe4e95af2b canvas: rotate updates 2019-03-20 09:02:55 +01:00
Gabor Kiss-Vamosi
11faf1df5f lv_canvas: add image rotate (experimental) 2019-03-20 08:01:01 +01:00
Gabor Kiss-Vamosi
a83fdb39a8 LV_EVENT_SELECT: send ID instead of text 2019-03-20 06:08:01 +01:00
Gabor Kiss-Vamosi
efe4845923 fix typo 2019-03-20 05:47:41 +01:00
Gabor Kiss-Vamosi
5218a5f8b8 rename scrips folder to sripts 2019-03-20 05:45:37 +01:00
Gabor Kiss-Vamosi
58d375bc93 fix typo: LV_SIGNAL_CONTROLL -> LV_SIGNAL_CONTROL 2019-03-19 07:15:00 +01:00
Gabor Kiss-Vamosi
ee04c41da8 feat(event): add LV_EVENT_SELECTED, event data paramter and update lv_btnm API 2019-03-19 06:30:05 +01:00
Gabor Kiss-Vamosi
4d8ec83866 fix(event): in lv_obj_del get the focused obj before removing the obj from the group
fix #946
2019-03-19 03:45:10 +01:00
Gabor Kiss-Vamosi
1927376fe5 move lv_utils to src/lv_misc 2019-03-18 16:17:32 +01:00
Gabor Kiss-Vamosi
627383fd0d draw triangle opa_scale fixes 2019-03-18 16:16:52 +01:00
Gabor Kiss-Vamosi
02689fceab solve conflicts 2019-03-18 16:09:52 +01:00
Gabor Kiss-Vamosi
615186c5d6 lv_kb: fix typo 2019-03-18 16:02:53 +01:00
Gabor Kiss-Vamosi
795f5772b6 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-18 15:59:46 +01:00
Gabor Kiss-Vamosi
4dabad3d6e add lv_conf_template.h to root and rename template folder to porting 2019-03-18 15:59:20 +01:00
Gabor Kiss-Vamosi
7560f01745 Merge pull request #959 from littlevgl/res_max
Fix remaining instances of LV_HOR_RES/LV_VER_RES in drawing code.
2019-03-18 15:08:11 +01:00
embeddedt
9f37a9803d Merge pull request #958 from manison/patch/fix-function-name-typo
Fix function name typo in btnm
2019-03-18 09:01:10 -04:00
Themba Dube
7af6818897 Fix remaining instances of LV_HOR_RES/LV_VER_RES in drawing code.
Based on #957.
2019-03-18 08:58:10 -04:00
embeddedt
d965db9fe6 Merge pull request #957 from manison/patch/fix-vla-compile-error
Fix error on compiler without VLA support
2019-03-18 08:56:48 -04:00
manison
cc8119d0a7 lv_btnm: fix function name typo 2019-03-18 10:50:54 +01:00
Gabor Kiss-Vamosi
fd26209b16 Merge pull request #952 from amirgon/dev-6.0
Dev 6.0 fixes
2019-03-18 09:46:59 +01:00
Amir Gonnen
a9f807ac99 removed commented out function declarations 2019-03-18 10:00:09 +02:00
manison
53b720cff7 fix error on compiler without VLA support 2019-03-18 08:30:49 +01:00
Mario Rubio Gómez
9f29289afd Added lv_utils and moved functions "bsearch & num_to_str". 2019-03-18 07:25:20 +01:00
Gabor Kiss-Vamosi
abfdfd1b20 rename lv_conf_templ.h to lv_conf_template.h 2019-03-18 05:23:15 +01:00
Gabor Kiss-Vamosi
3198340451 create template fodler 2019-03-18 05:22:06 +01:00
Amir Gonnen
85442c25c0 commented out functions without definition
Functions that are declared but not defined will cause the micropython build to fail, since it would assume, from file header, that these functions are available and will try to call them (linker error)
2019-03-18 01:27:06 +02:00
Amir Gonnen
b222fa3744 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-18 01:04:34 +02:00
Amir Gonnen
fc5f86d696 Fixed gc issues
LV_GC_INCLUDE must be included where LV_GC_ROOT is used

pointer to LV_GV_ROOT must come before LV_GC_ROOT macro
2019-03-18 01:04:20 +02:00
Ali Rostami
b84358dc7f add invalid functions for new data lines
when we want to add set data by `lv_chart_set_next` to a chart in `LV_CHART_MODE_CIRCULAR` mode we don't need to invalidate the whole chart object so these functions are added to just invalidate the added data area.
2019-03-17 16:38:02 +03:30
Ali Rostami
6c1152ed0c add update_mode to lv_chart_ext_t struct 2019-03-17 16:23:08 +03:30
Ali Rostami
5cbdde7729 Merge pull request #4 from littlevgl/dev-6.0
Dev 6.0
2019-03-17 13:19:19 +03:30
Gabor Kiss-Vamosi
f51bf17e39 move lvgl files to src folder 2019-03-17 08:33:03 +01:00
Gabor Kiss-Vamosi
2db846d5e0 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-17 07:59:43 +01:00
Gabor Kiss-Vamosi
efd647f853 lv_indev_get_key fixes 2019-03-17 07:59:38 +01:00
Gabor Kiss-Vamosi
03b7bb72ea Merge pull request #939 from eeshiken/patch-1
Remove inline functions which prevent compile
2019-03-17 07:46:21 +01:00
Gabor Kiss-Vamosi
0ab28f623c replace color macros with functions 2019-03-17 07:44:48 +01:00
Gabor Kiss-Vamosi
3964f3b843 Merge branch 'patch-1' of https://github.com/eeshiken/lvgl into eeshiken-patch-1 2019-03-17 07:36:30 +01:00
Ali Rostami
5a297777c0 Merge pull request #2 from littlevgl/dev-6.0
Merge pull request #943 from ali-rostami/master
2019-03-17 09:21:40 +03:30
Gabor Kiss-Vamosi
80738425f6 Merge pull request #943 from ali-rostami/master
adding area chart
2019-03-17 05:27:16 +01:00
Gabor Kiss-Vamosi
5916f1f5c4 lv_chart: minor fixes 2019-03-17 05:23:43 +01:00
Gabor Kiss-Vamosi
d7b3aeba66 add opa_scale to lv_draw_triangle 2019-03-17 05:22:25 +01:00
Gabor Kiss-Vamosi
de9119a27d Merge branch 'dev-6.0' into ali-rostami-master 2019-03-17 05:12:06 +01:00
Gabor Kiss-Vamosi
96f227e7e1 lv_roller.h: add missing declaration 2019-03-17 05:07:16 +01:00
Gabor Kiss-Vamosi
87117be081 Merge branch 'master' of https://github.com/ali-rostami/lvgl into ali-rostami-master 2019-03-17 05:06:49 +01:00
Gabor Kiss-Vamosi
6d1be4cc11 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-17 04:55:36 +01:00
Gabor Kiss-Vamosi
9c499bdeae lv_btnm: fix crash 2019-03-17 04:55:18 +01:00
Gabor Kiss-Vamosi
dc7ba94b06 Merge pull request #948 from littlevgl/fix_c99_errors
Fix remaining C99 errors
2019-03-17 04:51:19 +01:00
Gabor Kiss-Vamosi
855832b574 lv_roller: add infinite option 2019-03-17 04:32:37 +01:00
Themba Dube
240744f9c9 Silence another pedantic warning 2019-03-16 08:58:52 -04:00
Ali Rostami
a624019943 changed LL_READ_BACK call to LV_LL_READ_BACK
as we don't have `LL_READ_BACK` function anymore. I changed it to `LV_LL_READ_BACK`.
2019-03-16 09:03:50 +03:30
Themba Dube
edb58cc61b Name unnamed structs and remove duplicated semicolons 2019-03-15 19:41:54 -04:00
Gabor Kiss-Vamosi
1e763e6c5e roller, ddlist: minor fixes 2019-03-15 22:51:49 +01:00
Gabor Kiss-Vamosi
51824b4316 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-15 22:19:41 +01:00
Gabor Kiss-Vamosi
92149e11a6 update tehemes with new padding 2019-03-15 22:19:21 +01:00
Elvis Eshikena
5e41a28dcf Add inline functions to replace LV_COLOR_MAKE 2019-03-15 11:48:31 -07:00
embeddedt
2819b30716 Merge pull request #944 from manison/patch/remove-include
Remove unnecessary #include
2019-03-15 08:17:49 -04:00
manison
43371a4980 remove unnecessary #include 2019-03-15 11:41:52 +01:00
Gabor Kiss-Vamosi
8264492f87 minor fixes 2019-03-15 10:18:48 +01:00
Gabor Kiss-Vamosi
abf8cbfb92 Merge branch 'dev-6.0' into padding 2019-03-15 07:28:04 +01:00
Gabor Kiss-Vamosi
c9703af47e to lv_cont_get_fit_width/height to lv_obj 2019-03-15 07:27:58 +01:00
Gabor Kiss-Vamosi
0b53f0f9ed Merge branch 'master' into dev-6.0 2019-03-15 05:45:28 +01:00
Gabor Kiss-Vamosi
15baa59a8f tileview fixes 2019-03-15 05:45:27 +01:00
Gabor Kiss-Vamosi
ee5976ce12 lv_kb: rename function and comment updates 2019-03-15 05:22:23 +01:00
Gabor Kiss-Vamosi
c3156db6b9 apply new padding in some themes 2019-03-15 05:10:43 +01:00
Gabor Kiss-Vamosi
a0b6136dcf Merge branch 'dev-6.0' into padding 2019-03-14 19:37:13 +01:00
Gabor Kiss-Vamosi
e0aeed2e97 add more padding.bottom/top/right/left 2019-03-14 19:37:09 +01:00
Ali Rostami
22ad2e0ec1 adding lv_chart_draw_areas function
after adding this function it is possible to plot the area type chart too.
2019-03-14 11:18:53 +03:30
Ali Rostami
02e5ed8b16 adding area chart type 2019-03-14 11:11:48 +03:30
Gabor Kiss-Vamosi
3a49ece938 eanble sending events from events 2019-03-14 05:34:39 +01:00
Gabor Kiss-Vamosi
250ef8b136 start to replace padding.hor/ver with top/bottom/left/right 2019-03-13 23:58:33 +01:00
Gabor Kiss-Vamosi
e8fdac41a9 lv_group_add_obj: do not add teh object if already added to this group 2019-03-13 22:18:16 +01:00
Gabor Kiss-Vamosi
b8f598112f update lv_indev_enable to enable/disable an indev not a type 2019-03-13 22:08:20 +01:00
Gabor Kiss-Vamosi
98d43daa5d Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-03-13 12:07:37 +01:00
Gabor Kiss-Vamosi
095a159005 lv_tileview_set_tile_act: fix with no animation
It should the position of the scrollable but the size was set
2019-03-13 05:22:55 +01:00
Elvis
2be9e67697 replace micropython bindings 2019-03-12 12:06:25 -07:00
Gabor Kiss-Vamosi
89d56e5723 KEYPAD, ENCODER: not send ENTER (process it in RELEASE signals) 2019-03-12 19:20:23 +01:00
embeddedt
ec6598ccfb Update CONTRIBUTING.md with forum information 2019-03-12 10:35:48 -04:00
Gabor Kiss-Vamosi
6967a8e52f lv_page: fix arrow scroll 2019-03-12 15:17:28 +01:00
Gabor Kiss-Vamosi
3458b1bfb1 imporve ENCODER support by sending signals 2019-03-12 14:46:06 +01:00
Gabor Kiss-Vamosi
4e66afc65b send signals with LEYPAD input devices 2019-03-12 14:29:37 +01:00
Gabor Kiss-Vamosi
4b3859f949 remove btnm, mbox, kb, tabview actions 2019-03-12 06:20:45 +01:00
Elvis
a1ca0bd796 Remove inline functions which prevent compile 2019-03-11 17:26:27 -07:00
embeddedt
c74e48249d Add license information to CONTRIBUTING.md 2019-03-11 09:51:07 -04:00
Mario Rubio Gómez
92b79cf3a8 Change bsearch C standard function by new lv_bsearch propietary function. 2019-03-11 11:08:25 +01:00
Gabor Kiss-Vamosi
2bf4e080e4 remove lv_btnm_action to replace with generic event_cb 2019-03-11 06:18:44 +01:00
Gabor Kiss-Vamosi
2640727b29 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-09 05:51:46 +01:00
Gabor Kiss-Vamosi
52ee38d7c9 fix warnings 2019-03-09 05:51:33 +01:00
embeddedt
74a9f5b18e Merge pull request #936 from manison/patch/fix-typos
Fix some typos
2019-03-08 10:12:21 -05:00
Gabor Kiss-Vamosi
2eaa579121 lv_ddlist: fix value revert on focus 2019-03-08 15:48:44 +01:00
Gabor Kiss-Vamosi
fcd06e4c1c Merge pull request #924 from ali-rostami/master
add offset feature to img object
2019-03-08 15:03:35 +01:00
Gabor Kiss-Vamosi
245a6ccae6 Merge branch 'dev-6.0' into master 2019-03-08 15:03:13 +01:00
Ali Rostami
e263dddde9 add declaration for offset getter functions. 2019-03-08 17:05:36 +03:30
Ali Rostami
4ab2e505fd add 2 getter functions for offset attribute. 2019-03-08 17:02:56 +03:30
manison
bef17224e4 fix some typos 2019-03-08 14:11:13 +01:00
Gabor Kiss-Vamosi
a59a6880f0 lv_img_offset: invalidate img when offset changes 2019-03-08 11:53:34 +01:00
Gabor Kiss-Vamosi
363304f53e Merge branch 'master' of https://github.com/ali-rostami/lvgl into ali-rostami-master 2019-03-08 11:34:41 +01:00
Gabor Kiss-Vamosi
bff65c217d remove lv_i18n 2019-03-08 08:32:17 +01:00
Gabor Kiss-Vamosi
14b03df174 remove debug printf 2019-03-08 08:02:20 +01:00
Gabor Kiss-Vamosi
93e2b9e0b9 update lv_conf_templ.h 2019-03-08 07:54:36 +01:00
Gabor Kiss-Vamosi
15007e9071 add lv_disp_remove 2019-03-08 06:57:16 +01:00
Mario Rubio Gómez
b882174bf9 Fixed bsearch size of list elements. [sizeof(uint32_t*) --> sizeof(uint32_t)] 2019-03-07 09:50:23 +01:00
Gabor Kiss-Vamosi
370f8223b6 lv_indev_read: use the current corridnate as defult for POINTER type 2019-03-07 01:26:04 +01:00
Gabor Kiss-Vamosi
d5dd1c4b10 Merge branch 'event' of https://github.com/littlevgl/lvgl into event 2019-03-07 00:42:20 +01:00
Gabor Kiss-Vamosi
bc1d71a1d1 event handling improvments 2019-03-07 00:42:08 +01:00
Gabor Kiss-Vamosi
702fb9565d Add LV_ prefix to symbols and vhange USE_LV_... to LV_USE_... 2019-03-07 00:05:16 +01:00
Gabor Kiss-Vamosi
210de388d9 remove lv_ufs 2019-03-06 23:14:35 +01:00
Gabor Kiss-Vamosi
c4ca9870b0 group: add user_data 2019-03-06 23:14:19 +01:00
Gabor Kiss-Vamosi
3d4f823884 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-06 23:00:06 +01:00
Gabor Kiss-Vamosi
d9874ae0f4 marge master 2019-03-06 22:59:58 +01:00
Gabor Kiss-Vamosi
66e70afbb4 use the obj->top on focus to bring the obj. to the foregorund 2019-03-06 16:13:04 +01:00
Ali Rostami
0bce1876c1 declare lv_img_set_offset() with new params. 2019-03-06 17:35:14 +03:30
Ali Rostami
fc375fd115 define lv_img_set_offset() with new params 2019-03-06 17:33:14 +03:30
Mario Rubio Gómez
cc190bbb29 Changed index search by binary search for sparse glyphs fonts. 2019-03-06 11:14:06 +01:00
embeddedt
4c8015541e Merge pull request #926 from manison/patch/fix-typo
Fix typo in constant name
2019-03-05 10:17:41 -05:00
Gabor Kiss-Vamosi
9d0f68880a Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-03-05 15:34:36 +01:00
Gabor Kiss-Vamosi
78574541e3 lv_tileview: infinite loop bugfix 2019-03-05 15:32:09 +01:00
manison
b30ca0da76 fix typo in constant name (LV_IMG_CF_UNK*N*OWN) 2019-03-05 14:21:13 +01:00
Gabor Kiss-Vamosi
13a3364656 Update lv_port_disp_templ.c 2019-03-04 16:56:02 +01:00
Gabor Kiss-Vamosi
cabbe414a5 Update lv_port_disp_templ.c 2019-03-04 16:55:29 +01:00
Ali Rostami
c2e3e9d494 add offset member to lv_img_ext_t 2019-03-04 12:47:03 +03:30
Ali Rostami
e298f493ce add offset function 2019-03-04 12:41:28 +03:30
Ali Rostami
69b07acc4e Merge pull request #1 from littlevgl/master
432019 update
2019-03-04 12:23:13 +03:30
Gabor Kiss-Vamosi
9d72ced2b6 focus/defocus event updates 2019-03-03 11:20:49 +01:00
Gabor Kiss-Vamosi
b8c6783207 Update README.md 2019-03-03 08:13:13 +01:00
Gabor Kiss-Vamosi
c713c4135b Merge branch 'dev-6.0' into event 2019-03-03 04:29:17 +01:00
Gabor Kiss-Vamosi
2c4ea022b9 lv_page_focus: minor fix 2019-03-03 04:28:54 +01:00
embeddedt
961d8e0350 Merge pull request #922 from amirgon/undef_free
Workaround for stray 'free' macro
2019-03-02 17:37:29 -05:00
Amir Gonnen
6f53e4616a Workaround for stray 'free' macro
Related to littlevgl/lv_binding_micropython#11 'Build error for STM32 port due to 'free()' macro'
2019-03-03 00:12:12 +02:00
Gabor Kiss-Vamosi
e788907d9c remove free_data/ptr and relpace with user_data 2019-03-02 20:53:51 +01:00
embeddedt
2b4185ec23 Merge pull request #917 from manison/feature/add-mbox-api
Button matrix, message box: new APIs
2019-03-02 11:19:27 -05:00
Themba Dube
f509d8fa4f Apply ta label size fix from dev-6.0 2019-03-02 11:17:15 -05:00
Gabor Kiss-Vamosi
13f0b61953 improve LV_PROTECT_PRESS_LOST 2019-03-02 01:49:08 +01:00
Gabor Kiss-Vamosi
e50410ffb1 merge slider anim update 2019-03-02 01:23:33 +01:00
Gabor Kiss-Vamosi
cae61d4e3e bar/slider/sw anim updates 2019-03-01 23:50:30 +01:00
Gabor Kiss-Vamosi
86d7f4c888 imprve encoder event support 2019-03-01 22:23:59 +01:00
Gabor Kiss-Vamosi
4743e11967 lv_slider: experimental bar and slider animation update 2019-03-01 15:25:47 +01:00
embeddedt
2ffeef667f Merge pull request #918 from canardos/dev-6.0
add lv_cb_set_static_text function, fix incorrect kb_ctrl_num_map
2019-03-01 07:26:17 -05:00
canardos
2ffb0a83b0 Fix incorrect kb_ctrl_num_map 2019-03-01 15:56:27 +08:00
canardos
4608f72098 add lv_cb_set_static_text function 2019-03-01 15:25:29 +08:00
Gabor Kiss-Vamosi
c318a7fc37 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-03-01 07:53:36 +01:00
Gabor Kiss-Vamosi
25df5347aa lv_btnm_set_ctrl_map: update comment 2019-03-01 07:25:16 +01:00
Gabor Kiss-Vamosi
148cb16cd4 lv_roller_set_hor_fit: use the new fit system 2019-03-01 06:31:09 +01:00
Gabor Kiss-Vamosi
13fff73bdb event: use with keypad 2019-03-01 06:26:03 +01:00
embeddedt
fbeb1d785c Merge pull request #916 from manison/patch/fix-ta-variable-hides-arg
Remove unnecessary variable definition
2019-02-28 09:40:11 -05:00
Gabor Kiss-Vamosi
d992a71513 remove style.body.empty (replaced by style.body.opa) 2019-02-28 13:34:04 +01:00
Gabor Kiss-Vamosi
672626f225 lv_indev: name unnamed struct and unions 2019-02-28 13:05:47 +01:00
manison
513a7e0a4e btnm: introduce lv_btnm_set_pressed API 2019-02-28 09:27:25 +01:00
manison
4e9df1679e fix formatting 2019-02-28 09:09:58 +01:00
manison
4a54b6e4fa fix argument documentation 2019-02-28 09:08:53 +01:00
manison
a7338085ec mbox: introduce lv_mbox_get_btnm API 2019-02-28 09:07:07 +01:00
manison
7ac2009f16 ta: remove unnecessary variable definition/initialization 2019-02-28 08:49:46 +01:00
Gabor Kiss-Vamosi
00ef778c7c Merge branch 'master' of https://github.com/littlevgl/lvgl 2019-02-28 06:56:23 +01:00
Gabor Kiss-Vamosi
fbe838730f lv_btnm: init recolor to 0 2019-02-28 06:56:10 +01:00
Gabor Kiss-Vamosi
55197a2934 name unamed structs in lv_color.h 2019-02-28 06:08:15 +01:00
Gabor Kiss-Vamosi
205c791e00 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-02-28 05:23:31 +01:00
Gabor Kiss-Vamosi
b0d3164ecf lv_1i8n: minor fixes 2019-02-28 05:23:21 +01:00
Gabor Kiss-Vamosi
551eadc1d5 Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-02-27 10:58:29 +01:00
Gabor Kiss-Vamosi
409a998df2 add voaltile to 'disp_drv->flushing' to work with optimization 2019-02-27 10:58:18 +01:00
Gabor Kiss-Vamosi
c9a58a8a8c Merge branch 'master' of https://github.com/littlevgl/lvgl into dev-6.0 2019-02-27 10:55:58 +01:00
Gabor Kiss-Vamosi
aa4b17900b lv_ta: fix label auto size on lv_ta size change 2019-02-27 10:55:39 +01:00
Gabor Kiss-Vamosi
3f4c1fe91b imporve backward compatibility 2019-02-27 10:25:21 +01:00
Gabor Kiss-Vamosi
b2e07d858b revert placeholder init 2019-02-27 10:10:12 +01:00
Gabor Kiss-Vamosi
dfbcec2f0d lv_ta: init placeholder 2019-02-27 10:09:36 +01:00
Gabor Kiss-Vamosi
53b8056502 btnm fixes 2019-02-27 06:17:37 +01:00
Gabor Kiss-Vamosi
e323924176 merge dev-6.0 2019-02-27 06:04:30 +01:00
Gabor Kiss-Vamosi
1efb3d87c8 Merge pull request #825 from canardos/dev-6.0
Move control byte to separate array. Add functions to modify dynamically
2019-02-27 06:03:47 +01:00
Gabor Kiss-Vamosi
591e02c71b Merge branch 'dev-6.0' into dev-6.0 2019-02-27 06:00:14 +01:00
Gabor Kiss-Vamosi
e85e4a8eb9 lv_hal_indev: remove unnamed stuct and union 2019-02-26 19:46:37 +01:00
Gabor Kiss-Vamosi
dc0ce46b0c update obejcts with the new event system 2019-02-26 16:07:40 +01:00
Gabor Kiss-Vamosi
50e69bab6b start to implement the new generic event system 2019-02-26 09:25:46 +01:00
Gabor Kiss-Vamosi
cc3ef640da rename lv_fs_free to lv_fs_free_space to avoid collosion woth free() 2019-02-25 15:34:35 +01:00
Gabor Kiss-Vamosi
f7d6604b9b Merge branch 'dev-6.0' of https://github.com/littlevgl/lvgl into dev-6.0 2019-02-25 15:21:51 +01:00
Gabor Kiss-Vamosi
a6821a6cb8 lv_i18n: update void returns to char 2019-02-25 15:21:41 +01:00
embeddedt
f386101e82 Merge pull request #896 from manison/patch/fix-unused-var
Remove unused variable in text area
2019-02-25 09:02:14 -05:00
manison
2aa5f67381 remove unused variable 2019-02-25 09:26:27 +01:00
Gabor Kiss-Vamosi
eb33596d02 add USE_LV_USER_DATA_SINGLE/MULTI 2019-02-25 07:06:05 +01:00
Gabor Kiss-Vamosi
663b8d6c89 fix conflicts 2019-02-25 06:59:31 +01:00
Gabor Kiss-Vamosi
ca2a2e9c49 fix conflicts 2019-02-25 06:56:49 +01:00
Gabor Kiss-Vamosi
54778eb303 update lv_conf files 2019-02-25 06:50:20 +01:00
Gabor Kiss-Vamosi
72288f4450 i18n: fix warnings 2019-02-24 22:27:51 +01:00
Gabor Kiss-Vamosi
c59c71b5c9 Merge branch 'dev-6.0' into i18n 2019-02-24 22:23:39 +01:00
Gabor Kiss-Vamosi
e7a14993c7 Merge branch 'new_fit' into dev-6.0 2019-02-24 22:23:12 +01:00
Gabor Kiss-Vamosi
408ba8d574 i18n: minor API updates 2019-02-24 22:22:37 +01:00
Gabor Kiss-Vamosi
054e43e6e9 indev/disp cb: pass driver as first argument 2019-02-24 21:20:51 +01:00
Gabor Kiss-Vamosi
65685a0da6 Merge pull request #892 from amirgon/patch-1
Add Micropython feature to README.md
2019-02-24 12:26:42 +01:00
Amir Gonnen
0bab902753 Add Micropython feature
and a short example
2019-02-24 11:20:37 +02:00
Gabor Kiss-Vamosi
9141d95865 lv_cont: inform children about parent size change on autofit 2019-02-24 07:06:22 +01:00
Gabor Kiss-Vamosi
ddbd8386d2 lv_page: fixes when child is added 2019-02-24 06:41:00 +01:00
Gabor Kiss-Vamosi
285ff7d3b4 lv_cont: improve fit with TIGHT, FLOOD, FILL 2019-02-24 06:24:36 +01:00
Themba Dube
5f94480bfb Don't check LV_LOG_LEVEL unless USE_LV_LOG is enabled 2019-02-22 12:10:17 -05:00
Themba Dube
7cfa099ec3 Merge remote-tracking branch 'origin/master' into dev-6.0 2019-02-22 12:02:23 -05:00
embeddedt
a374baa376 Merge pull request #889 from littlevgl/embeddedt-patch-1
Remove semicolons in lv_font_builtin.h
2019-02-22 12:01:49 -05:00
Themba Dube
7e60fcb298 Merge remote-tracking branch 'origin/master' into dev-6.0 2019-02-22 12:00:58 -05:00
embeddedt
02c95e8fed Remove semicolons in lv_font_builtin.h 2019-02-22 10:09:07 -05:00
Gabor Kiss-Vamosi
9264cd9d56 Merge branch 'multi-disp' of https://github.com/littlevgl/lvgl into multi-disp 2019-02-22 14:22:23 +01:00
Gabor Kiss-Vamosi
c34d5a4f6b init disp resolution 2019-02-22 14:22:11 +01:00
Gabor Kiss-Vamosi
56f54d864a Merge pull request #888 from joltwallet/lv_list_remember
lv_list remember
2019-02-22 13:14:28 +01:00
Brian Pugh
465f8fa96a lv_list: lv_list_set_btn_selected: only write ext->last_sel if btn is non-NULL. 2019-02-21 21:40:00 -08:00
Brian Pugh
a7260bbfa9 Revert semicolon removal from f4498fd0. This semicolon is necessary for more natural, less error prone custom font declaration in lv_conf.h 2019-02-21 21:02:18 -08:00
embeddedt
4a6e34dcbd Merge pull request #883 from manison/patch/ta-fix-crash-uninit-field
Fix crash on uninitialized field in text area
2019-02-21 10:55:30 -05:00
Themba Dube
7f6131d440 Merge remote-tracking branch 'zavovi/master' into dev-6.0 2019-02-21 10:40:59 -05:00
embeddedt
374dfcd60a Merge pull request #884 from littlevgl/revert-836-master
Revert "[#809] Added x axis scrolling feature into lv_page_focus function."
2019-02-21 10:40:01 -05:00
embeddedt
457f667cab Revert "[#809] Added x axis scrolling feature into lv_page_focus function." 2019-02-21 10:39:39 -05:00
embeddedt
4b6e78cf78 Merge pull request #836 from zavovi/master
[#809] Added x axis scrolling feature into lv_page_focus function.
2019-02-21 10:39:31 -05:00
embeddedt
1f25bfb60b Merge pull request #879 from manison/patch/focus-visible-objects-only
Modify lv_group_focus_next/prev so that hidden objects don't receive focus
2019-02-21 10:38:28 -05:00
manison
a1e062bc49 ta: fix crash on uninitialized field 2019-02-21 15:21:53 +01:00
Gabor Kiss-Vamosi
438e665c6d Merge pull request #881 from manison/patch/multidisp-fix-vla-errs
Fix compilation errors when compiler does not support VLAs
2019-02-21 14:47:39 +01:00
manison
fd6e5ae3ef fix compilation errors when compiler does not support VLAs 2019-02-21 13:46:32 +01:00
Gabor Kiss-Vamosi
b9ed89a976 i18n add const prefixes where required 2019-02-21 12:37:33 +01:00
Vilem Zavodny
07e9fc4ccf [#809] Fixed scroll focus when object is out of the page in twi sides. 2019-02-21 10:41:41 +01:00
manison
000cc9d92f modify lv_group_focus_next/prev so that hidden objects don't receive focus 2019-02-21 10:18:17 +01:00
Gabor Kiss-Vamosi
a39d617ac9 Update stale.yml 2019-02-21 07:35:14 +01:00
Gabor Kiss-Vamosi
69456cd3f5 minor fixes 2019-02-21 00:50:14 +01:00
Gabor Kiss-Vamosi
d27dfbd6d7 update README 2019-02-21 00:50:06 +01:00
Gabor Kiss-Vamosi
0ccaac4e00 updade lv_conf_templ.h 2019-02-21 00:21:59 +01:00
Gabor Kiss-Vamosi
030fe60b34 multi-disp: API updates 2019-02-20 23:58:13 +01:00
embeddedt
be8db0719f Merge pull request #876 from ironiron/master
Remove duplicate semicolons
2019-02-20 16:49:45 -05:00
Rafał Mazurkiewicz
f4498fd0a4 removed unnecessary semicolons 2019-02-20 22:36:56 +01:00
embeddedt
28b97582b6 Merge pull request #873 from manison/patch/fix-press-from-keypad
Text area should ignore presses generated by keypad input device
2019-02-20 12:36:13 -05:00
manison
236f9291be ta ignores presses generated by keypad input device
fixes bug introduced in 4f50a5a: when the LV_SIGNAL_PRESSED is generated by keypad input device (through LV_GROUP_KEY_ENTER key), it does not carry information about position (the position information is overlayed with key information in lv_indev_proc_t struct in this case), so we cannot touch it
2019-02-20 17:08:38 +01:00
Gabor Kiss-Vamosi
fcf1d52e4a replace lv_lang with more advanced lv_i18n 2019-02-20 12:55:21 +01:00
Gabor Kiss-Vamosi
f2bd701927 multi-disp: API updates 2019-02-20 10:16:33 +01:00
Gabor Kiss-Vamosi
8581a249bd lv_group_create: inititalize missing fields 2019-02-20 06:20:29 +01:00
canardos
688cd79a55 Update function documentation for clarity 2019-02-20 03:32:37 +08:00
canardos
d5f7f3d51c Fix incorrect iterators 2019-02-20 03:29:53 +08:00
canardos
1b519cd104 Add const qualifier to lv_btnm_set_map / static functions 2019-02-19 15:06:23 +08:00
canardos
a6d8d1cbc5 Implement lv_btnm_set_ctrl_map. Update function documentation 2019-02-19 14:56:45 +08:00
Gabor Kiss-Vamosi
a494521d7b Merge branch 'dev-6.0' into manison-feature/theme_focus_cb 2019-02-19 07:03:31 +01:00
embeddedt
245d81ee92 Update README.md 2019-02-18 13:05:58 -05:00
Themba Dube
99825aa29f Merge branch 'master' into dev-6.0 2019-02-18 12:18:16 -05:00
Themba Dube
d05ec536fd Fix compilation errors when USE_LV_GROUP is 0 2019-02-18 12:17:56 -05:00
Themba Dube
153f16fc05 Merge branch 'master' of github.com:littlevgl/lvgl 2019-02-18 12:16:16 -05:00
Themba Dube
2e0b8e10ae Add missing include to lv_math.c 2019-02-18 12:15:57 -05:00
manison
df88e319a8 fixed compilation errors when USE_LV_GROUP == 0 2019-02-18 08:34:41 +01:00
manison
5dfac5a92b use memcpy rather than structure assignment, since this might not be supported by all compilers 2019-02-18 08:24:51 +01:00
Gabor Kiss-Vamosi
62195b7cc7 lv_label_draw fix with offset.y 2019-02-18 06:41:02 +01:00
Gabor Kiss-Vamosi
9572c7d4ed lv_imgbtn: bugfix 2019-02-18 05:57:30 +01:00
Gabor Kiss-Vamosi
20282ce89f remove var. declaration in for loop header 2019-02-18 05:57:30 +01:00
Themba Dube
62e58a25c9 Merge branch 'master' into dev-6.0 2019-02-17 14:58:32 -05:00
Themba Dube
19ea8ac55f Fix compilation error introduced in 1e8ea6b15b 2019-02-17 14:58:10 -05:00
Gabor Kiss-Vamosi
2af6ca8833 Merge pull request #841 from muhammetasan/master
10 times faster int to string implementation
2019-02-15 15:09:53 +01:00
manison
f9d8269274 update theme focus styles 2019-02-15 09:54:47 +01:00
manison
3c7b6ae94c copy default style modifiers to all themes 2019-02-15 08:59:53 +01:00
manison
8ec60fbe3e add groups to the linked list
https://github.com/littlevgl/lvgl/issues/806
2019-02-15 08:46:12 +01:00
manison
79dc8b2ace Merge branch 'dev-6.0' into feature/theme_focus_cb 2019-02-15 08:04:54 +01:00
Gabor Kiss-Vamosi
e3bbe0a4fd spinbox fixes 2019-02-15 06:34:30 +01:00
Gabor Kiss-Vamosi
96adbe3827 spinbox fixes 2019-02-15 06:34:30 +01:00
Gabor Kiss-Vamosi
ef8563c9bd multi-disp_: minor fixes 2019-02-15 06:20:48 +01:00
Muhammet Asan
533d39b4c2 10 times faster int to string implementation 2019-02-14 14:13:25 +01:00
Themba Dube
48bd4fecc6 Merge branch 'master' into dev-6.0 2019-02-13 18:20:06 -05:00
manison
92babea8c8 fix typo in function name 2019-02-13 06:46:08 -05:00
Vilem Zavodny
3425f29130 [#809] Added x axis scrolling feature into lv_page_focus function. 2019-02-13 11:19:47 +01:00
Gabor Kiss-Vamosi
673892cd80 multi-disp: unique VDB to displays 2019-02-13 01:40:22 +01:00
Gabor Kiss-Vamosi
f5b8dd17b8 lv_list_set_selected_btn fix 2019-02-12 22:48:54 +01:00
Gabor Kiss-Vamosi
cfa7d22d33 multi-disp: display level vdb experiment 2019-02-12 22:35:59 +01:00
embeddedt
fabd551e2a Fix error reported by @canardos in lv_imgbtn 2019-02-12 11:03:34 -05:00
manison
327d7c84ca added style modification callbacks to lv_theme_t struct
https://github.com/littlevgl/lvgl/issues/806
2019-02-12 16:35:17 +01:00
Gabor Kiss-Vamosi
2b67dcd2cf Merge pull request #827 from littlevgl/embeddedt-patch-1
Add LV_INDEV_DRAG_THROW checker to lv_conf_templ.h
2019-02-12 16:24:45 +01:00
Gabor Kiss-Vamosi
7571bedc46 multi-disp: minor updates 2019-02-12 16:20:59 +01:00
Gabor Kiss-Vamosi
b15ffa3d89 multi-disp: add unique inv_buf to each display 2019-02-12 15:38:13 +01:00
embeddedt
5addccc270 Merge pull request #828 from littlevgl/embeddedt-patch-2
Fix image source not being copied in lv_imgbtn
2019-02-12 09:15:46 -05:00
manison
c94fb96bb2 fix theme initialization 2019-02-12 15:02:43 +01:00
embeddedt
9ac933fb9e Fix image source not being copied in lv_imgbtn 2019-02-12 07:04:34 -05:00
embeddedt
44c2397804 Add LV_INDEV_DRAG_THROW checker to lv_conf_templ.h 2019-02-12 07:01:04 -05:00
Gabor Kiss-Vamosi
8c4e4c3861 multi-disp: refresh multiple displays 2019-02-12 12:21:34 +01:00
canardos
fa736411e3 Move control byte to separate array and add functions to modify dynamically 2019-02-12 16:55:30 +08:00
manison
728cd17275 determine required size of the th_styles array at compile time and remove runtime assertion
https://github.com/littlevgl/lvgl/issues/806
2019-02-12 09:04:24 +01:00
Gabor Kiss-Vamosi
caa2064c90 lv_spinbox: fixes 2019-02-12 07:55:46 +01:00
Gabor Kiss-Vamosi
6f47dd6522 theme fixes 2019-02-12 07:33:42 +01:00
Gabor Kiss-Vamosi
c71047f359 lv_chart: LV_CHART_VETICAL_LINES fixes 2019-02-12 06:03:06 +01:00
Gabor Kiss-Vamosi
6871e0252a add LV_ATTRIBUTE_MEM_ALIGN option
update lv_conf_chechker.h
2019-02-12 05:42:45 +01:00
Gabor Kiss-Vamosi
56cfcc693a Merge pull request #820 from seyyah/patch-1
Typo: sonething -> something
2019-02-11 11:30:25 +01:00
seyyah
a87f4388e5 Typo: sonething -> something 2019-02-11 13:25:11 +03:00
manison
44e5cc446c moved theme styles into substructure within lv_theme_t
https://github.com/littlevgl/lvgl/issues/806
2019-02-11 09:35:06 +01:00
embeddedt
f686243f64 Add warning about LV_INDEV_DRAG_THROW 2019-02-10 06:53:11 -05:00
embeddedt
d64902b2a5 Add note about LV_INDEV_DRAG_THROW to lv_conf_templ.h 2019-02-10 06:52:17 -05:00
Gabor Kiss-Vamosi
5b92b4d01b move basic descriptors to lv_disp_t 2019-02-10 11:06:47 +01:00
Gabor Kiss-Vamosi
0733885a73 Merge pull request #817 from fpw/bugfix/color-narrowing
Fix gcc narrowing warning
2019-02-10 07:59:10 +01:00
Gabor Kiss-Vamosi
c42f378184 fix image colors in themes 2019-02-10 06:51:28 +01:00
Gabor Kiss-Vamosi
ad74d32f51 fix image colors in themes 2019-02-10 06:51:28 +01:00
Folke Will
321a08b42e Retain formatting 2019-02-09 13:48:09 +01:00
Folke Will
b7d5537961 Fix color narrowing warning 2019-02-09 13:46:29 +01:00
embeddedt
32017ff659 Fix x/y mixup in lv_page.c (fixes #815) 2019-02-08 10:20:05 -05:00
embeddedt
e2c0e58af9 Merge pull request #811 from amirgon/master
Prevent crash when lv_init is called more than once.
2019-02-07 18:25:26 -05:00
embeddedt
1c67d07dc3 Move setting of _lv_initialized and correct formatting
Set _lv_initialized at the end of lv_init.

Correct formatting of "if" statement to be consistent with the rest of the library.
2019-02-07 17:57:06 -05:00
Amir Gonnen
e72589c6d4 Prevent crash when lv_init is called more than once. After the first call, it will do nothing. 2019-02-08 00:03:16 +02:00
Gabor Kiss-Vamosi
e2e6479fb0 multi_disp: add dynamic hor/ver res 2019-02-07 19:17:10 +01:00
embeddedt
89e8995dc4 Merge branch 'master' into dev-6.0
Merges bugfixes from 5.3.
2019-02-07 10:38:08 -05:00
Gabor Kiss-Vamosi
b0b1174564 lv_canvas: fix with LV_COLOR_16_SWAP 2019-02-07 10:27:47 +01:00
Gabor Kiss-Vamosi
57a542fcac Merge pull request #793 from MiSimon/feature_ta_placeholder_text
Placeholder text for lv_ta
2019-02-04 16:14:47 +01:00
Gabor Kiss-Vamosi
fb1a7fc0fc Update stale.yml 2019-02-04 15:28:01 +01:00
Gabor Kiss-Vamosi
4f50a5a147 ta placeholder: fixes 2019-02-03 01:33:21 +01:00
Gabor Kiss-Vamosi
2692100bb1 multi-disp: minor update 2019-02-03 00:47:50 +01:00
Gabor Kiss-Vamosi
e7fcb58bec Merge pull request #789 from MiSimon/feature_ta_place_cursor_on_click
Position the text cursor when a lv_ta object is clicked
2019-02-03 00:43:07 +01:00
Gabor Kiss-Vamosi
2752b51d50 Merge pull request #788 from MiSimon/feature_ta_ctrl_keys
Added POS1 and END support to lv_ta
2019-02-03 00:40:34 +01:00
MiSimon
a71964f0b2 Removed some spaces 2019-02-02 23:25:11 +01:00
MiSimon
43b20179ed removed code duplication 2019-02-02 22:59:28 +01:00
MiSimon
0d76cc4ef3 Changed POS1 to HOME 2019-02-02 22:45:02 +01:00
Gabor Kiss-Vamosi
cfe0c14e56 ta click: add to lv_ta_signal too 2019-02-02 05:11:18 +01:00
Gabor Kiss-Vamosi
1e6dc74c5a lv_ta click simplification 2019-02-02 05:00:59 +01:00
Gabor Kiss-Vamosi
e1afa61128 multi-disp: inital changes 2019-02-02 04:46:19 +01:00
Gabor Kiss-Vamosi
b5bcede82f Merge pull request #790 from 0xflotus/patch-1
fixed small errors
2019-02-02 04:36:44 +01:00
Gabor Kiss-Vamosi
23dfc37171 Merge pull request #787 from littlevgl/update-version-readme
Change v5.3 to 5.3 in README
2019-02-02 04:23:17 +01:00
0xflotus
148539d242 fixed small errors 2019-02-02 02:26:49 +01:00
MiSimon
8acc122ab0 Added placeholder label to text area 2019-02-02 01:26:52 +01:00
MiSimon
4e61a2da33 Fixed missing NULL check 2019-02-02 00:21:50 +01:00
MiSimon
dc9cffec5d Position cursor at the position at which lv_ta was clicked 2019-02-02 00:19:18 +01:00
MiSimon
86b34460dd Added POS1 and END support to lv_ta 2019-02-01 23:53:09 +01:00
Gabor Kiss-Vamosi
b66e8410f6 Update README.md 2019-02-01 22:27:57 +01:00
Themba D
9a272039d3 Change v5.3 to 5.3
When the badge already says 'version' it doesn't make sense to put the 'v' before the version number.
2019-02-01 16:05:46 -05:00
Gabor Kiss-Vamosi
dc69cf82eb Update README.md 2019-02-01 21:53:12 +01:00
Gabor Kiss-Vamosi
17c19fc35a Update README.md 2019-02-01 15:10:59 +01:00
Gabor Kiss-Vamosi
4cd13016d3 Update README.md 2019-02-01 05:44:19 +01:00
Gabor Kiss-Vamosi
84781c62c2 version number to v5.3 2019-02-01 05:09:20 +01:00
Gabor Kiss-Vamosi
378453c954 Merge branch 'dev-5.3' 2019-02-01 05:08:33 +01:00
Gabor Kiss-Vamosi
40709625cc Merge remote-tracking branch 'origin/master' into dev-5.3 2019-02-01 05:04:05 +01:00
Gabor Kiss-Vamosi
77f6844340 add top level lvgl.mk 2019-02-01 05:03:35 +01:00
Gabor Kiss-Vamosi
68083fa15a Update README.md 2019-01-31 21:23:56 +01:00
Gabor Kiss-Vamosi
cbab184002 lv_canvas: restore reverted updates 2019-01-31 21:06:28 +01:00
Gabor Kiss-Vamosi
0819688f50 Revert "lv_canvas: comment update"
This reverts commit 078bc96b77.
2019-01-31 20:24:40 +01:00
Gabor Kiss-Vamosi
6770e1ab32 Revert "lv_canvas: support indexed images"
This reverts commit ed8ec4a4c2.
2019-01-31 20:24:30 +01:00
Gabor Kiss-Vamosi
078bc96b77 lv_canvas: comment update 2019-01-31 19:39:57 +01:00
Gabor Kiss-Vamosi
ed8ec4a4c2 lv_canvas: support indexed images 2019-01-31 19:38:40 +01:00
Gabor Kiss-Vamosi
4fbf1401fa Update README.md 2019-01-31 19:28:09 +01:00
Gabor Kiss-Vamosi
5f2f6b6617 Update README.md 2019-01-31 19:26:39 +01:00
Gabor Kiss-Vamosi
e3c2a7db67 Update README.md 2019-01-31 19:25:41 +01:00
Gabor Kiss-Vamosi
ace5acea0b Update README.md 2019-01-31 19:13:50 +01:00
Gabor Kiss-Vamosi
8511c6b9cf Update README.md 2019-01-31 19:13:26 +01:00
Gabor Kiss-Vamosi
3ef4a73db5 Update README.md 2019-01-31 15:56:52 +01:00
Gabor Kiss-Vamosi
2274ca348b Merge pull request #783 from seyyah/dev-5.3
lv_canvas: lv_canvas_boundary_fill4 function interface enhancement
2019-01-31 15:55:25 +01:00
Gabor Kiss-Vamosi
e9fca9cad6 Update README.md 2019-01-31 15:43:23 +01:00
Gabor Kiss-Vamosi
96eba5f877 Update README.md 2019-01-31 15:42:18 +01:00
seyyah
3db41c327f lv_canvas: update function prototypes 2019-01-31 16:22:07 +03:00
seyyah
6de1ad36dc lv_canvas: merge last commits 2019-01-31 16:15:50 +03:00
seyyah
635ca1ab90 lv_canvas: lv_canvas_boundary_fill4 function interface enhancement 2019-01-31 16:07:59 +03:00
Gabor Kiss-Vamosi
215cdda238 Update README.md 2019-01-31 14:06:54 +01:00
Gabor Kiss-Vamosi
ffbabfc8fe Merge pull request #782 from littlevgl/badges
Get rid of links on badges
2019-01-31 14:03:42 +01:00
Themba D
5a62ac79e9 Merge branch 'master' into badges 2019-01-31 08:02:57 -05:00
Themba D
846a470717 Merge branch 'master' into badges 2019-01-31 08:02:13 -05:00
Gabor Kiss-Vamosi
f6f8f09bce Update README.md 2019-01-31 14:01:56 +01:00
Themba D
6ffd1475c5 Get rid of links on badges 2019-01-31 08:00:46 -05:00
Gabor Kiss-Vamosi
5bbc3e69e9 Update README.md 2019-01-31 14:00:42 +01:00
Gabor Kiss-Vamosi
f1d5e9c4a2 Update README.md 2019-01-31 13:59:53 +01:00
Gabor Kiss-Vamosi
68f25fa999 add_lv_fs_is_ready() 2019-01-31 13:24:02 +01:00
Gabor Kiss-Vamosi
ef7aa132a6 Update README.md 2019-01-31 10:25:08 +01:00
Gabor Kiss-Vamosi
f41ce51bf9 Update README.md 2019-01-31 10:20:11 +01:00
Gabor Kiss-Vamosi
ed38f7dcb5 Merge pull request #780 from amirgon/dev-5.3
lv_label_set_text_id must be declared conditionally
2019-01-31 09:34:34 +01:00
Amir Gonnen
cc77d78d5a lv_label_set_text_id must be declared conditionally otherwise lv_micropython would create a wrapper to an undefined function 2019-01-31 09:39:59 +02:00
Gabor Kiss-Vamosi
159e07a8ea indev_drag bugfix if dragged on a page 2019-01-31 03:17:30 +01:00
Gabor Kiss-Vamosi
cf434828dc Merge pull request #778 from MiSimon/lv_group_key_ascii_codes
Changed LV_GROUP_KEY macros to the corresponding ascii values
2019-01-31 01:21:56 +01:00
MiSimon
649a21ad86 Changed LV_GROUP_KEY macros to the corresponding ascii values 2019-01-31 01:18:04 +01:00
Gabor Kiss-Vamosi
dd5f66e125 inialize _lv_indev_list adn _lv_disp_list in lv_init 2019-01-31 00:25:15 +01:00
Gabor Kiss-Vamosi
c8920b0c06 Update README.md 2019-01-30 23:05:21 +01:00
Gabor Kiss-Vamosi
09bcf9dd12 Update README.md 2019-01-30 22:17:04 +01:00
Gabor Kiss-Vamosi
d1b593be66 Merge pull request #775 from littlevgl/license-origin
Add note about origin of function
2019-01-30 17:05:50 +01:00
Gabor Kiss-Vamosi
3acd6c3cd0 lv_refr: remove unneccesary waiting for flush 2019-01-30 16:13:11 +01:00
Gabor Kiss-Vamosi
aca2a2d428 lv_refr: formatting 2019-01-30 16:07:56 +01:00
Gabor Kiss-Vamosi
d3dc1f8bf1 Merge pull request #772 from amirgon/dev-5.3
bugfix: return int not pointer
2019-01-30 14:09:04 +01:00
Themba D
a91c142b3c Add note about origin of function 2019-01-30 07:02:03 -05:00
Gabor Kiss-Vamosi
fa28cee957 disable multi-lang related functions if USE_LV_MULTI_LANG = 0 2019-01-30 10:49:59 +01:00
Gabor Kiss-Vamosi
93ec0a512a Update README.md 2019-01-30 10:04:03 +01:00
Gabor Kiss-Vamosi
1bf36221f4 Update README.md 2019-01-30 10:00:50 +01:00
Gabor Kiss-Vamosi
0e3f95c1a9 Update README.md 2019-01-30 07:16:43 +01:00
Gabor Kiss-Vamosi
01e2bf2374 Update README.md 2019-01-30 06:37:51 +01:00
Gabor Kiss-Vamosi
34bcab34d8 Update README.md 2019-01-30 06:35:56 +01:00
Gabor Kiss-Vamosi
fceaf167a4 Update README.md 2019-01-29 21:33:18 +01:00
Amir Gonnen
950fb33206 bugfix: return int not pointer 2019-01-29 22:06:36 +02:00
Gabor Kiss-Vamosi
7b23f7a8fd Update README.md 2019-01-29 20:59:14 +01:00
Gabor Kiss-Vamosi
43e852d43a Update README.md 2019-01-29 20:57:46 +01:00
Gabor Kiss-Vamosi
0bef3ab1bf Update README.md 2019-01-29 15:50:29 +01:00
Gabor Kiss-Vamosi
967d3b54a3 Update README.md 2019-01-29 15:46:30 +01:00
Gabor Kiss-Vamosi
ec31125af3 Update README.md 2019-01-29 15:42:59 +01:00
Gabor Kiss-Vamosi
84d44b2487 Update README.md 2019-01-29 15:41:07 +01:00
Gabor Kiss-Vamosi
9f2f89163f Update README.md 2019-01-29 14:15:28 +01:00
Gabor Kiss-Vamosi
d29536673a Update README.md 2019-01-29 14:10:55 +01:00
Gabor Kiss-Vamosi
8283fcc2d7 Update README.md 2019-01-29 14:10:41 +01:00
Gabor Kiss-Vamosi
5e33e5574e Update README.md 2019-01-29 13:51:49 +01:00
Gabor Kiss-Vamosi
dd41f411e6 lv_conf_checker.py handle prerocessor indentations (e.g. # define ...) 2019-01-29 10:28:48 +01:00
Gabor Kiss-Vamosi
92be58d1d8 fix to work without display 2019-01-29 04:58:21 +01:00
Gabor Kiss-Vamosi
fd1e8483a5 multi-lang: fix function names 2019-01-29 04:41:44 +01:00
Gabor Kiss-Vamosi
855dc44e32 solve warings 2019-01-28 16:02:11 +01:00
Gabor Kiss-Vamosi
9185e1c4a6 add GC to lv_conf_templ.h 2019-01-28 16:01:59 +01:00
Gabor Kiss-Vamosi
08007aa4d5 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2019-01-28 15:41:08 +01:00
Gabor Kiss-Vamosi
3b7a468c6a update lv_conf_checker.h 2019-01-28 15:32:50 +01:00
Gabor Kiss-Vamosi
fba3337925 Merge branch 'multi-lang' into dev-5.3 2019-01-28 15:32:12 +01:00
Gabor Kiss-Vamosi
811f3c0834 lv_lang: disable the whole file id USE_LV_MULTI_LANG == 0 2019-01-28 15:18:59 +01:00
Gabor Kiss-Vamosi
31d0a7f3ae lv_mem: add LV_MEM_ADR to set wotk memory address externally 2019-01-28 15:18:59 +01:00
Brian Pugh
4adbdad9b3 Added lv_gc.c to lv_misc.mk 2019-01-28 15:18:59 +01:00
Gabor Kiss-Vamosi
120a431766 lv_slider: reduce bg size if knob_in = 1 too 2019-01-28 15:18:59 +01:00
Brian Pugh
9cecebfe0a lv_sw.c: lv_sw_toggle_anim initial commit 2019-01-28 15:18:59 +01:00
Brian Pugh
514511c15a lv_sw: lv_sw_toggle doc fix 2019-01-28 15:18:59 +01:00
Brian Pugh
610548ba3d lv_sw: lv_sw_toggle initial commit 2019-01-28 15:18:59 +01:00
Amir Gonnen
dd3c65df7a add missing include to stdlib, needed for 'abs' function on integers 2019-01-28 15:18:59 +01:00
seyyah
195a3d3768 lv_canvas: add the function comments to the header file too 2019-01-28 15:18:59 +01:00
seyyah
65236ede89 lv_canvas: add basic drawing functionalities 2019-01-28 15:18:59 +01:00
Amir Gonnen
0e8984d121 Fix compilation errors: comment out unused variables. cast memcpy dest since it's defined as const. 2019-01-28 15:18:59 +01:00
manison
9f84fb1749 replace inclusion of nonstandard header <strings.h> with standard header <string.h> 2019-01-28 15:18:59 +01:00
manison
b6046a8e23 allow disabling text area password char animation without needing to disable all animations 2019-01-28 15:18:59 +01:00
Amir Gonnen
af3cb73fbc Fixed refernce to anim_ll. LV_GC_ROOT must be used for Micropython gc support 2019-01-28 15:18:59 +01:00
Amir Gonnen
c816847a3c remove historic pycparser. It is here before micropython sources moved to another repository and history rewritten 2019-01-28 15:18:59 +01:00
Amir Gonnen
652809d005 restore LV_COLOR_HEX macros and add inline functions in addition to them, not instead of them 2019-01-28 15:18:59 +01:00
Amir Gonnen
8bfa8ff721 lv_colors.h: move OPA macros to enum, move LV_COLOR_HEX macros to inline funcs, this exposes them to Micropython. If enum member is a number (as in OPA), prefix it by underscore to create a valid python attribute. Bugfix: when returning to a struct by value, copy it first. lv_mpy.c renamed to lv_mpy_example.c since the actual lv_mpy.c should be generated by the build script automatically based on current H files and lv_conf.h 2019-01-28 15:18:59 +01:00
Amir Gonnen
a6c89ee54f add '_lv_' prefix to global roots 2019-01-28 15:18:59 +01:00
Amir Gonnen
0935110284 gc: add undescore to roots, arranged lv_mem.c regarding gc defines. Added support to Symbols using the numstr technique of encoding the characters as a number in an enum. Globals: register them directly witout the need for constructor to access them. Updated example code. Updated lv_mpy.c 2019-01-28 15:18:59 +01:00
Amir Gonnen
f5bd68fa77 Enable Micropython gc (Garbage Collection) on lvgl. This is controlled by LV_ENABLE_GC macro defined in lv_conf.h. When enabled, lv_conf.h should also define LV_MEM_CUSTOM_REALLOC, LV_MEM_CUSTOM_GET_SIZE, LV_GC_INCLUDE and LV_GC_ROOT 2019-01-28 15:18:59 +01:00
Amir Gonnen
d44a618169 Initial revision for Mpy extension generation script 2019-01-28 15:18:59 +01:00
neverxie
ae3eca803d [del] extra spaces 2019-01-28 15:18:59 +01:00
Themba D
b087c1153c Merge pull request #770 from manison/patch-typo-ta-add-char
Fix typo in new line char detection
2019-01-28 06:57:29 -05:00
Gabor Kiss-Vamosi
e12a8b06f0 lv_img_set_src_id fix 2019-01-28 09:17:22 +01:00
manison
fce445e464 lv_ta: fixes typo in new line char detection 2019-01-28 08:55:57 +01:00
Gabor Kiss-Vamosi
5bb66ef268 Merge pull request #769 from joltwallet/square_knob
lv_slider: make knob a perfect square (fix 1 pixel error)
2019-01-28 06:33:13 +01:00
Gabor Kiss-Vamosi
eca9245382 lv_mem: add LV_MEM_ADR to set wotk memory address externally 2019-01-28 06:09:06 +01:00
Brian Pugh
aaa969dc8a lv_slider: make knob a perfect square (fix 1 pixel error) 2019-01-27 16:28:55 -08:00
Themba D
28414505bc Merge pull request #767 from joltwallet/lv_gc_mk
Added lv_gc.c to lv_misc.mk
2019-01-27 17:58:56 -05:00
Brian Pugh
ac8ce1f643 Added lv_gc.c to lv_misc.mk 2019-01-27 12:30:25 -08:00
Gabor Kiss-Vamosi
5ed73c1918 lv_slider: reduce bg size if knob_in = 1 too 2019-01-27 07:16:24 +01:00
Themba D
79e973bfeb Merge pull request #762 from joltwallet/sw_toggle
Add lv_sw_toggle() and lv_sw_toggle_anim()
2019-01-26 15:29:32 -05:00
Brian Pugh
64c87e0e4a lv_sw.c: lv_sw_toggle_anim initial commit 2019-01-25 20:17:43 -08:00
Brian Pugh
6af285adb8 lv_sw: lv_sw_toggle doc fix 2019-01-25 17:42:08 -08:00
Brian Pugh
d962e36dbb lv_sw: lv_sw_toggle initial commit 2019-01-25 17:09:59 -08:00
Themba D
7713b5f941 Merge pull request #761 from amirgon/dev-5.3
Dev 5.3  fix compilation errors on lv_mpy
2019-01-25 16:45:03 -05:00
Amir Gonnen
8764388033 Merge remote-tracking branch 'upstream/dev-5.3' into dev-5.3 2019-01-25 23:18:49 +02:00
Gabor Kiss-Vamosi
2ae3733cd9 Merge pull request #752 from manison/patch-disable-pwd-anim
allow disabling text area password char animation without needing to disable all animations
2019-01-25 16:29:34 +01:00
Gabor Kiss-Vamosi
2762222fcc rename multi-lang functions 2019-01-25 16:19:50 +01:00
Amir Gonnen
a337e25fb1 add missing include to stdlib, needed for 'abs' function on integers 2019-01-25 16:01:52 +02:00
seyyah
fe5eab8f9a lv_canvas: add the function comments to the header file too 2019-01-25 14:50:31 +03:00
seyyah
bdb3bb778e erge branch 'dev-5.3' of github.com:seyyah/lvgl into dev-5.3 2019-01-25 14:14:46 +03:00
seyyah
98b6e446f0 lv_canvas: add basic drawing functionalities 2019-01-25 14:14:22 +03:00
Gabor Kiss-Vamosi
c8f5638780 Merge pull request #756 from amirgon/dev-5.3
Fix compilation errors
2019-01-25 08:27:14 +01:00
Amir Gonnen
c6bafdf203 Fix compilation errors: comment out unused variables. cast memcpy dest since it's defined as const. 2019-01-25 00:27:28 +02:00
Themba D
1bbc482f1a Merge pull request #753 from manison/patch-replace-strings-h
Replace nonstandard <strings.h> with standard <string.h> header
2019-01-24 11:02:08 -05:00
manison
a89fc9460b replace inclusion of nonstandard header <strings.h> with standard header <string.h> 2019-01-24 16:36:13 +01:00
manison
fd2e78965c allow disabling text area password char animation without needing to disable all animations 2019-01-24 16:16:19 +01:00
Amir Gonnen
10f3928169 Fixed refernce to anim_ll. LV_GC_ROOT must be used for Micropython gc support 2019-01-24 00:51:46 +02:00
Amir Gonnen
bf01817ab8 remove historic pycparser. It is here before micropython sources moved to another repository and history rewritten 2019-01-24 00:17:37 +02:00
Amir Gonnen
b58e526a0b restore LV_COLOR_HEX macros and add inline functions in addition to them, not instead of them 2019-01-24 00:17:37 +02:00
Amir Gonnen
fe479fe261 lv_colors.h: move OPA macros to enum, move LV_COLOR_HEX macros to inline funcs, this exposes them to Micropython. If enum member is a number (as in OPA), prefix it by underscore to create a valid python attribute. Bugfix: when returning to a struct by value, copy it first. lv_mpy.c renamed to lv_mpy_example.c since the actual lv_mpy.c should be generated by the build script automatically based on current H files and lv_conf.h 2019-01-24 00:17:37 +02:00
Amir Gonnen
473c2276dd add '_lv_' prefix to global roots 2019-01-24 00:14:33 +02:00
Amir Gonnen
1e8ea6b15b gc: add undescore to roots, arranged lv_mem.c regarding gc defines. Added support to Symbols using the numstr technique of encoding the characters as a number in an enum. Globals: register them directly witout the need for constructor to access them. Updated example code. Updated lv_mpy.c 2019-01-24 00:14:33 +02:00
Amir Gonnen
a883f0b39a Enable Micropython gc (Garbage Collection) on lvgl. This is controlled by LV_ENABLE_GC macro defined in lv_conf.h. When enabled, lv_conf.h should also define LV_MEM_CUSTOM_REALLOC, LV_MEM_CUSTOM_GET_SIZE, LV_GC_INCLUDE and LV_GC_ROOT 2019-01-24 00:14:33 +02:00
Amir Gonnen
848939683e Initial revision for Mpy extension generation script 2019-01-24 00:14:33 +02:00
Gabor Kiss-Vamosi
6cd62851bb lv_img multi lang fixes 2019-01-23 15:24:56 +01:00
Gabor Kiss-Vamosi
97b9fce748 lv_img: add multi language support 2019-01-23 15:07:22 +01:00
Gabor Kiss-Vamosi
c18be9809d Merge branch 'dev-5.3' into mixed 2019-01-23 14:44:18 +01:00
Gabor Kiss-Vamosi
68a860b958 lv_lang: minor fixes 2019-01-23 12:30:50 +01:00
Gabor Kiss-Vamosi
a6ead395a0 lv_lang: minor fixes 2019-01-23 12:30:10 +01:00
Gabor Kiss-Vamosi
e0fe252b90 lv_lang: add const return value to the get text function 2019-01-23 12:29:10 +01:00
Gabor Kiss-Vamosi
0a673294c8 add lv_lang.h to lvgl.h 2019-01-23 12:27:54 +01:00
Gabor Kiss-Vamosi
15d08b6692 multi_lang rework: use separate arrays for each language 2019-01-23 12:25:33 +01:00
Gabor Kiss-Vamosi
b500f0c8f3 lv_porting fixes 2019-01-23 12:25:33 +01:00
Gabor Kiss-Vamosi
5c33fb67e5 Merge pull request #748 from neverxie/master
[delete] extra spaces
2019-01-23 09:36:35 +01:00
neverxie
50dc23f42c [del] extra spaces 2019-01-23 13:53:22 +08:00
Gabor Kiss-Vamosi
10b86cea37 lv_anim: add ease_in/out path 2019-01-22 15:52:47 +01:00
Gabor Kiss-Vamosi
7c6d92ec10 Merge pull request #744 from manison/patch-dont-redefine-msvcrt-symbols
don't redefine _CRT_SECURE_NO_WARNINGS symbol if already defined
2019-01-22 13:16:12 +01:00
manison
4a39e2b731 don't redefine _CRT_SECURE_NO_WARNINGS symbol if already defined 2019-01-22 10:31:36 +01:00
Gabor Kiss-Vamosi
ce94a1ad5b editorconfig: remove duplicated insert_final_newline 2019-01-21 07:04:44 +01:00
Gabor Kiss-Vamosi
264f630467 lv_canvas: fix typo 2019-01-20 21:37:56 +01:00
Themba Dube
9711cf9d9a Merge remote-tracking branch 'origin/master' into dev-5.3 2019-01-20 06:52:10 -05:00
Gabor Kiss-Vamosi
a005c62d17 add .editorconfig 2019-01-18 06:59:16 +01:00
Gabor Kiss-Vamosi
7b193a40ef add lv_canvas_mult_buf 2019-01-17 16:24:01 +01:00
Gabor Kiss-Vamosi
6718decbb7 Update README.md 2019-01-17 12:18:09 +01:00
Gabor Kiss-Vamosi
87e262f27a lv_porting fixes 2019-01-16 17:50:57 +01:00
Gabor Kiss-Vamosi
a7207af953 multi_lang: rename functions 2019-01-16 10:01:27 +01:00
Gabor Kiss-Vamosi
d0f42c26cc add multi language support system + lv_label_set_text_multi 2019-01-16 09:57:07 +01:00
Gabor Kiss-Vamosi
6d449962ff lv_canvas: lv_canvas_copy_to_buf 2019-01-16 08:37:18 +01:00
Gabor Kiss-Vamosi
8ddc9f21fe Set LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN default value to 1 to avoide warnings 2019-01-15 15:36:35 +01:00
Gabor Kiss-Vamosi
3ab541949f add lv_canvas.c/h files 2019-01-14 19:39:21 +01:00
Themba D
b9e61de4d2 Merge pull request #724 from turoksama/dev-5.3
Fix an error in get_row_height.
2019-01-14 10:56:02 -05:00
Samuel
38d0e5b6e7 Fix an error in get_row_height.
Fix get_row_height error.
2019-01-14 23:38:28 +08:00
Gabor Kiss-Vamosi
bb4b37c6b3 add new object type: lv_ canvas 2019-01-14 16:03:40 +01:00
Gabor Kiss-Vamosi
6f12166af2 lv_task_handler: revert the addition of return value. See: #708 2019-01-14 15:21:04 +01:00
Gabor Kiss-Vamosi
eec348132f turn LV_OPA_.. defines to enum 2019-01-14 15:08:54 +01:00
Gabor Kiss-Vamosi
623fc13407 lv_table: minor fix for cell_crop 2019-01-14 07:13:09 +01:00
Themba Dube
a3f50c61f9 Merge branch 'master' into dev-5.3 2019-01-13 08:40:59 -05:00
Themba Dube
da01b4dd31 Change 'issue' to 'issue or pull request' in stale.yml 2019-01-13 08:40:38 -05:00
Themba D
ae0ceee8f6 Merge pull request #723 from joltwallet/lv_list_get_btn_index
Get btn index without providing list object
2019-01-13 08:30:09 -05:00
Gabor Kiss-Vamosi
088936e7f8 add return value to lv_task_handler. resolves #708 2019-01-13 07:46:12 +01:00
Gabor Kiss-Vamosi
d76b9c5b17 Merge pull request #721 from joltwallet/long_word_wrap2
Break long words immediately if word is longer than wrap width 2
2019-01-13 06:20:34 +01:00
Gabor Kiss-Vamosi
645eeae16c update lv_porting with file system examples 2019-01-13 05:28:42 +01:00
Brian Pugh
84bcf11d57 retabbed 2019-01-12 14:28:20 -08:00
Themba D
6d8b8a878d Fix documentation links in CONTRIBUTING.md 2019-01-12 17:21:28 -05:00
Brian Pugh
bd30245492 Get btn index without providing list object 2019-01-12 12:08:41 -08:00
Brian Pugh
48cd728693 move LV_TXT_BREAK_LONG defines to lv_conf.h 2019-01-12 10:59:15 -08:00
Brian Pugh
1a4a35f5a1 Change LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN to 0; see discussion #721 2019-01-12 08:44:16 -08:00
Brian Pugh
5b8e2cb6e1 Fixed off by one error for LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 2019-01-12 08:42:37 -08:00
Gabor Kiss-Vamosi
8a3b60e0c5 lv_conf_templ.h: minor fix 2019-01-12 15:23:21 +01:00
Brian Pugh
6c55ba5d31 Fixed characters jumping after character after future break character 2019-01-11 08:57:23 -08:00
Gabor Kiss-Vamosi
440c6415bc lv_table: crop improvements 2019-01-11 17:37:26 +01:00
Gabor Kiss-Vamosi
fcb95272b9 fix typo 2019-01-11 16:46:36 +01:00
Gabor Kiss-Vamosi
ff21f5a590 Merge pull request #712 from joltwallet/get_txt_width_fix
Correctly count text width
2019-01-11 16:42:57 +01:00
Gabor Kiss-Vamosi
ec19c8c87e lv_imgbtn_get_src_middle fix typo 2019-01-11 16:03:40 +01:00
Brian Pugh
d25f0db948 fix SYMBOL_DOWN 2019-01-10 23:11:48 -08:00
Brian Pugh
62d7b3b034 Added pretty breaks for long, but not widht-long words 2019-01-10 19:52:47 -08:00
Brian Pugh
d8aa9bfa1d move define macro to lv_txt.c 2019-01-10 19:07:36 -08:00
Brian Pugh
56fd6d944c Fixed last character from being cutoff 2019-01-10 19:05:19 -08:00
Gabor Kiss-Vamosi
a4d6c628e3 lv_table: add crop poperty 2019-01-10 16:06:20 +01:00
Gabor Kiss-Vamosi
9bbdd5840c Update stale.yml 2019-01-10 06:59:32 +01:00
Gabor Kiss-Vamosi
52bb50550d Merge pull request #713 from joltwallet/roller_visible_row_count_align_fix
Roller visible height fix
2019-01-07 11:31:27 +01:00
Gabor Kiss-Vamosi
1468da5c33 lv_style: revert defult line_space (modified during testing) 2019-01-07 07:17:58 +01:00
Gabor Kiss-Vamosi
d3fab62f8f txt position fixes 2019-01-07 07:06:31 +01:00
Gabor Kiss-Vamosi
c64a7f1f9c Merge pull request #711 from joltwallet/remove_group_ordering
Remove from group before deleting children
2019-01-07 05:58:09 +01:00
Brian Pugh
db219daeda Roller visible 1 should have a full line-width height padding 2019-01-06 19:24:00 -08:00
Brian Pugh
ee2ddf26f3 in roller, set lv_ddlist_set_fix_height 1 text.line_space less than row_cnt 2019-01-06 19:02:29 -08:00
Brian Pugh
ced3903100 reduce redundant width calculations in lv_label 2019-01-06 18:32:26 -08:00
Brian Pugh
b5e40a44b1 lv_draw_label don't add letter_spaces for 0 width characters 2019-01-06 18:24:47 -08:00
Brian Pugh
5f11d67812 remove duplicate lv_txt_get_width code in lv_label 2019-01-06 18:17:24 -08:00
Brian Pugh
4b2cd9030c Correctly count characters. Also remove letter spaces from 0-width characters 2019-01-06 17:49:07 -08:00
Brian Pugh
239ed85889 Remove from group before deleting children 2019-01-06 11:25:10 -08:00
Gabor Kiss-Vamosi
61bb01e06d lv_chart: fix uninitialized variable 2019-01-06 15:38:31 +01:00
Gabor Kiss-Vamosi
666136851c lv_btnm: last row y2 align bugfix 2019-01-06 15:20:06 +01:00
Gabor Kiss-Vamosi
a6714bbe47 Create stale.yml 2019-01-05 23:30:05 +01:00
Gabor Kiss-Vamosi
167e26a243 lv_mbox: use a unique anim end cb to avoid casting 2019-01-05 19:45:05 +01:00
Themba D
7c322c36ed Merge pull request #705 from joltwallet/vdb-fix
single vdb macro fix for get_active and get_inactive
2019-01-05 07:56:23 -05:00
Brian Pugh
752e752dbd single vdb macro fix for get_active and get_inactive 2019-01-04 20:48:34 -08:00
Brian Pugh
ab1a9b41e6 Add a minimum number of characters to print on a super long screen before wrapping it to the next line 2019-01-04 18:43:20 -08:00
Brian Pugh
b7c08e8aed Proper word wrapping taking into account letter_space 2019-01-04 09:10:27 -08:00
Gabor Kiss-Vamosi
9c675a8e82 Merge pull request #700 from joltwallet/list_fix
bug fix: initialize list size to 0; feature: select first added item …
2019-01-04 14:40:15 +01:00
Gabor Kiss-Vamosi
22e1ccdfa9 Merge pull request #699 from joltwallet/lv_group_send_data_returntype
Change lv_group_send_data() return type to lv_res_t
2019-01-04 14:36:30 +01:00
embeddedt
a4bfd51401 Merge branch 'master' into dev-5.3 2019-01-04 08:27:43 -05:00
Themba D
10b648c96e Merge pull request #704 from Fabien-Chouteau/patch-1
lv_hal_tick: Fix typo
2019-01-04 08:26:31 -05:00
Fabien Chouteau
d109f409fb lv_hal_tick: Fix typo 2019-01-04 12:13:33 +01:00
Gabor Kiss-Vamosi
83cadc8abe LV_VDB_TRUE_DOUBLE_BUFFERED: improvements 2019-01-04 08:40:33 +01:00
Gabor Kiss-Vamosi
31d18a21b2 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2019-01-04 08:33:30 +01:00
Gabor Kiss-Vamosi
20150c1418 LV_VDB_TRUE_DOUBLE_BUFFERED: improvements 2019-01-04 08:33:19 +01:00
Gabor Kiss-Vamosi
9610d914e9 lv_tabview: initialize the btn_hide field 2019-01-04 08:32:45 +01:00
Brian Pugh
0a0df60f77 Long word breaking algorithm 2019-01-03 23:17:19 -08:00
Brian Pugh
b4960b19fb bug fix: initialize list size to 0; feature: select first added item to a focused list object 2019-01-03 15:31:03 -08:00
Brian Pugh
3922c18054 Change lv_group_send_data() return type to lv_res_t 2019-01-03 14:57:45 -08:00
Themba Dube
53c19167f3 Merge branch 'master' into dev-5.3 2019-01-03 13:36:02 -05:00
Themba D
20464832da Merge pull request #697 from MCF/warning-preproc-fix
Remove unneeded #warning pre-processor command in lv_vdb.h
2019-01-03 13:35:25 -05:00
Mike Fellows
73ecaefde8 Remove unneeded #warning pre-processor command in lv_vdb.h
That directive breaks non-gcc builds (e.g. for the pc simulator) and is
not very valuable from a user point of view.
2019-01-03 10:31:02 -08:00
Gabor Kiss-Vamosi
2ab274542a Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2019-01-03 18:04:38 +01:00
Gabor Kiss-Vamosi
280cba0c54 fix warnings 2019-01-03 15:57:31 +01:00
Gabor Kiss-Vamosi
bbe78633a2 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2019-01-03 15:51:06 +01:00
Gabor Kiss-Vamosi
c20af89a11 fix warnings 2019-01-03 15:50:55 +01:00
Gabor Kiss-Vamosi
72fa6f092d Merge pull request #696 from littlevgl/embeddedt-patch-1
Fix uninitialized values reported in #695
2019-01-03 15:50:14 +01:00
Themba D
db26a60320 Fix another uninitialized value reported in #695 2019-01-03 07:16:25 -05:00
Themba D
e6126bc218 Fix uninitialized value reported in #695 2019-01-03 07:15:33 -05:00
Gabor Kiss-Vamosi
29200c8814 Merge pull request #691 from Ferruck/fix/limits-error
lv_log: Fix type limits error
2019-01-03 11:19:45 +01:00
Gabor Kiss-Vamosi
5bbb83c68b Merge pull request #693 from joltwallet/dirty_heap
Don't dirty heap if the lv_btn action deletes the button obj
2019-01-03 10:07:34 +01:00
Themba D
8ec482fdbd Coding standard update 2019-01-02 16:13:04 -05:00
Brian Pugh
f2c4aadfe1 Don't dirty heap if the action deletes the button 2019-01-02 15:09:27 -06:00
Philipp Trommler
75f3198c3d lv_log: Fix type limits error
When building LittlevGL with a rather recent compiler (tested with GCC
7.3.1 provided by Arm), `-Wall`, `-Wextra` and `-Werror` activated and
`LV_LOG_LEVEL` set to `LV_LOG_LEVEL_TRACE`, compilation fails due to a
type limits error in lv_log.c

     if(level >= LV_LOG_LEVEL) {
              ^~

because the comparison is always true, since level is a `lv_log_level_t`
(that is a typedef for `uint8_t`) and `LV_LOG_LEVEL_TRACE` equals 0.

Fix that by making `lv_log_level_t` a typedef to `int8_t`.

Fixes #690
2019-01-02 15:18:02 +01:00
Gabor Kiss-Vamosi
d3101f8e96 lv_bar: add symmetric feature to start the indicator from zero 2019-01-01 14:14:17 +01:00
Gabor Kiss-Vamosi
1927a4cf47 lv_table: minor fixes 2019-01-01 13:48:30 +01:00
Gabor Kiss-Vamosi
0bd55a1fa1 lv_table: add 4 CELL styles and horizontal line drawing on '\n' 2019-01-01 13:44:19 +01:00
Gabor Kiss-Vamosi
cda531fc56 lv_circ.c: include lv_circ.h for consistency 2019-01-01 01:34:29 +01:00
Gabor Kiss-Vamosi
8b3786db40 remove unused function declarations 2019-01-01 01:33:18 +01:00
Gabor Kiss-Vamosi
639edca434 fix incosistent function parameter names. See #681 2019-01-01 01:32:16 +01:00
Gabor Kiss-Vamosi
bf43316942 add themes to spinbox, table and tileview 2019-01-01 01:20:14 +01:00
Gabor Kiss-Vamosi
9c7c200048 lv_porting: add display and indev porting skeleton functions 2018-12-31 18:19:38 +01:00
Gabor Kiss-Vamosi
ceab2ac138 lv_gauge: add interpolation for needle between degrees 2018-12-30 22:00:59 +01:00
Gabor Kiss-Vamosi
6322798b61 lv_trigo_sin: bugfix for with 179 degree 2018-12-30 22:00:59 +01:00
Gabor Kiss-Vamosi
a9921c78e8 lv_btnm: drawing bugfix 2018-12-30 15:58:14 +01:00
Gabor Kiss-Vamosi
7ac12cd071 lv_ta: refresh only the cursor area on cursor blink 2018-12-30 15:02:16 +01:00
Gabor Kiss-Vamosi
d7ae21ce85 lv_vdb: add comments 2018-12-29 09:18:58 +01:00
Gabor Kiss-Vamosi
31468efc8e update lv_conf_temp with extra info 2018-12-29 09:12:46 +01:00
Gabor Kiss-Vamosi
f25dec516b add LV_VDB_TRUE_DOUBLE_BUFFERED 2018-12-29 09:12:32 +01:00
Gabor Kiss-Vamosi
8bca90a40b Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-28 18:07:11 +01:00
Gabor Kiss-Vamosi
62b3b2c578 update mk files to use absolute path 2018-12-28 18:06:57 +01:00
Themba Dube
ae68e0a449 Merge branch 'master' into dev-5.3 2018-12-27 12:36:19 -05:00
Gabor Kiss-Vamosi
6536a30b03 Merge pull request #676 from embeddedt/kb_bksp
Change lv_kb delete key to backspace
2018-12-27 18:35:07 +01:00
Themba Dube
0dcaa505fa Replace "Del" key on keyboard with backspace since that is its function 2018-12-27 10:32:05 -05:00
Gabor Kiss-Vamosi
963d91f07d Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-26 23:49:55 +01:00
Gabor Kiss-Vamosi
65cfdd1bf6 lv_table: fix size (add 1 px) 2018-12-26 23:49:41 +01:00
Gabor Kiss-Vamosi
67972f787b Merge pull request #673 from ErichStyger/master
Several typo and spelling fixes
2018-12-26 23:38:57 +01:00
Gabor Kiss-Vamosi
d78c2f0ef5 Merge pull request #661 from tjstyle/master
lv_log: fix warnings
2018-12-26 23:36:15 +01:00
Gabor Kiss-Vamosi
a114a42b74 Update README.md 2018-12-26 23:35:18 +01:00
Gabor Kiss-Vamosi
3e8e94d49c fix warning in lv_anim_path_bounce 2018-12-26 19:31:00 +01:00
Gabor Kiss-Vamosi
fa89846ee3 lv_sw: call action when released 2018-12-26 19:29:17 +01:00
Gabor Kiss-Vamosi
bffa23c4b2 add LV_VERSION_CHECK 2018-12-26 08:24:47 +01:00
Gabor Kiss-Vamosi
d19792289d add LV_BORDER_INTERNAL 2018-12-26 08:24:18 +01:00
Erich Styger
2bfcce40e2 typo and spelling fixes in comments 2018-12-26 07:58:06 +01:00
Erich Styger
9cf4cc1533 Merge pull request #1 from littlevgl/master
Syncing with original repo
2018-12-26 07:42:33 +01:00
Teguh Sobirin
60ee852587 lv_log: fix warnings 2018-12-24 00:49:16 +07:00
Themba Dube
9531f04abf Merge branch 'master' into dev-5.3 2018-12-23 06:40:11 -05:00
Themba Dube
6f5c1ba629 Fix wrong return value of lv_arc_get_angle_end (Closes #663) 2018-12-23 06:38:54 -05:00
Gabor Kiss-Vamosi
4c2df29808 lv_group: do not modify the focused style if the syle_mod function is NULL 2018-12-22 20:41:20 +01:00
Gabor Kiss-Vamosi
bfba1c477f rename bool '..._en' function paramter names to be more consistent 2018-12-22 19:45:55 +01:00
Gabor Kiss-Vamosi
8c74a23ec1 rename lv_line_y_inv to lv_line_y_invert 2018-12-22 19:32:27 +01:00
Gabor Kiss-Vamosi
fd5ca1e52b Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-22 19:08:55 +01:00
Gabor Kiss-Vamosi
f46958bb3f minor fixes 2018-12-22 19:08:40 +01:00
Gabor Kiss-Vamosi
1787b63599 reworks VDB to work with true double buffering 2018-12-22 19:08:03 +01:00
Gabor Kiss-Vamosi
f80c6ab178 Merge pull request #656 from littlevgl/tabview_hide
Add lv_tabview_set_hidden/lv_tabview_get_hidden
2018-12-21 19:10:34 +01:00
Gabor Kiss-Vamosi
7947a991a4 lv_draw_label: optimization 2018-12-21 15:25:45 +01:00
Gabor Kiss-Vamosi
391fda7ba6 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-21 14:35:40 +01:00
Gabor Kiss-Vamosi
19a5f5cd54 minor fixes 2018-12-21 14:35:25 +01:00
Gabor Kiss-Vamosi
8cd0fcefef add lv_table to the makefile 2018-12-20 23:40:52 +01:00
Gabor Kiss-Vamosi
a4a98617c7 lv_table: fix uninitialized new cells 2018-12-20 23:15:29 +01:00
Gabor Kiss-Vamosi
222ef3a76a lv_img: fix memory leak 2018-12-20 22:48:10 +01:00
Themba Dube
4fbfbc3dd7 Add lv_tabview_set_hidden/lv_tabview_get_hidden 2018-12-20 10:07:28 -05:00
Gabor Kiss-Vamosi
693ab86a6c Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-20 00:04:21 +01:00
Gabor Kiss-Vamosi
837cb2b695 add comment to lv_conf_checker.h 2018-12-20 00:04:09 +01:00
Gabor Kiss-Vamosi
cc20e4cb7d add lv_conf_checker.h 2018-12-20 00:01:24 +01:00
Gabor Kiss-Vamosi
789775d8d7 minor fixes 2018-12-20 00:01:05 +01:00
Gabor Kiss-Vamosi
1314eff237 Merge pull request #641 from littlevgl/indev_feedback
Input device feedback API
2018-12-19 20:28:03 +01:00
Gabor Kiss-Vamosi
47f507ff62 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-19 16:35:58 +01:00
Gabor Kiss-Vamosi
e32c35905a lv_img: use style.image.color for texts 2018-12-19 16:35:44 +01:00
Gabor Kiss-Vamosi
61caef8e94 lv_indev_set_cursor: don't enable cursor for LV_INDEV_TYPE_BUTTON 2018-12-18 07:33:55 +01:00
Gabor Kiss-Vamosi
e6c4845983 lv_label: remove space from LV_LABEL_LONG_ROLL/SCROLL anims 2018-12-18 07:25:34 +01:00
Gabor Kiss-Vamosi
e5f449e74f indev feedback: update signal names 2018-12-17 14:54:12 +01:00
Gabor Kiss-Vamosi
93781909bb lv_draw_label: optimization for long texts (uncomment some lines) 2018-12-17 14:34:26 +01:00
Gabor Kiss-Vamosi
60c07120c7 lv_draw_label: optimization for long texts 2018-12-17 14:33:50 +01:00
Themba Dube
4c0cd82d9c Initial lv_indev_set_feedback support 2018-12-16 20:16:48 -05:00
embeddedt
f0aa7abf21 Merge pull request #636 from littlevgl/btnm_recolor
Add ability to recolor btnm and mbox button labels
2018-12-16 09:35:18 -05:00
Themba Dube
35901db2cd Add mbox recoloring support 2018-12-16 09:33:10 -05:00
Gabor Kiss-Vamosi
0fa3fecfe4 Fix ifdef guards around lv_sw animation code 2018-12-16 08:43:35 -05:00
Gabor Kiss-Vamosi
8a0868e2e0 Merge branch 'dev-5.3' into btnm_recolor 2018-12-16 11:33:42 +01:00
Gabor Kiss-Vamosi
59151b375c Merge pull request #633 from upbeat27/dev-5.3
Add wrap enable/disable for lv_group
2018-12-16 09:52:50 +01:00
Gabor Kiss-Vamosi
5e080ad61d Merge pull request #622 from turoksama/dev-5.3
Attempt to fix an LV_BORDER_RIGHT drawing issue.
2018-12-16 08:32:24 +01:00
Themba Dube
ea224d409e Add lv_btnm_set_recolor/lv_btnm_get_recolor 2018-12-15 21:44:44 -05:00
Themba Dube
37761540d0 Fix warning in lv_table.c 2018-12-15 21:26:14 -05:00
Themba Dube
b4d4759383 Merge branch 'master' into dev-5.3 2018-12-15 09:17:49 -05:00
Gabor Kiss-Vamosi
52ffa29ebe lv_kb: bugfix update 2018-12-15 09:16:47 -05:00
Themba Dube
c74f4656fc Fix OK and close button symbols appearing in text area 2018-12-15 09:16:39 -05:00
Josh
92747ec37a Fix missing temporary setting of wrap to 1 2018-12-14 16:02:29 -08:00
Gabor Kiss-Vamosi
3b81dc2a55 lv_kb: bugfix update 2018-12-15 00:11:28 +01:00
Josh
47bdf497b6 Fix lv_group wrap behavior when removing head or tail object from group 2018-12-14 14:24:47 -08:00
Themba Dube
b1712325a7 Fix OK and close button symbols appearing in text area 2018-12-14 16:32:22 -05:00
Josh
9817e050e0 Add wrap enable/disable for lv_group
Allows for controlling whether focus next/prev will wrap at the boundaries, or if they will stop at the boundaries.
2018-12-14 13:05:00 -08:00
Themba Dube
001f788631 Merge remote-tracking branch 'origin/dev-5.3' into embeddedt-dev-5.3 2018-12-14 16:01:58 -05:00
Gabor Kiss-Vamosi
6f1d0ef97b fixes because of sending LV_SIGNAL_PRESSED in LV_GROUP_KEY_ENTER press 2018-12-14 10:33:18 +01:00
Gabor Kiss-Vamosi
964965be9d Merge branch 'table' into dev-5.3 2018-12-13 17:42:14 +01:00
Gabor Kiss-Vamosi
4919f24985 lv_table updates 2018-12-13 17:41:59 +01:00
Gabor Kiss-Vamosi
1e23df926c lv_table updates 2018-12-13 17:38:27 +01:00
Gabor Kiss-Vamosi
dea81daa79 add lv_font_remove 2018-12-13 15:18:06 +01:00
Themba Dube
1ccec72f8c Move ifdef guard around lv_sw_set_anim_time 2018-12-12 20:15:09 -05:00
Themba Dube
bd38e5a7f2 Merge branch 'dev-5.3' into embeddedt-dev-5.3 2018-12-12 20:04:45 -05:00
Gabor Kiss-Vamosi
6c552e8447 ta: fix cursor draw with LV_TXT_UTF8 == 0 2018-12-12 23:45:06 +01:00
Gabor Kiss-Vamosi
86de6f5fbc lv_font: fix typo 2018-12-12 18:55:32 +01:00
Gabor Kiss-Vamosi
a7bc41b528 ddlist and roller delete fix 2018-12-12 09:08:10 +01:00
Samuel
49b136191f Update lv_btnm.c
Attempt to fix an LV_BORDER_RIGHT drawing issue.
2018-12-12 11:30:17 +08:00
Gabor Kiss-Vamosi
e68c3ab725 line draw updates with width = 1 2018-12-11 18:00:48 +01:00
Themba Dube
a2a03d8d53 Merge remote-tracking branch 'origin/master' into dev-5.3 2018-12-11 07:34:09 -05:00
embeddedt
d712a12db1 Merge pull request #619 from mheranco/master
* Swapped two comments in lv_list.c
* Removed unused variables in lv_theme_alien and lv_theme_mono
2018-12-11 07:31:50 -05:00
Martin Herancourt
e60482ca0e minor fixes 2018-12-11 10:21:22 +01:00
Themba Dube
42a8c59886 Handle USE_LV_ANIMATION being disabled in lv_page and lv_sw 2018-12-10 15:35:57 -05:00
embeddedt
b1499cd954 Merge pull request #614 from embeddedt/ddlist_align
Add lv_ddlist_set_align and lv_ddlist_get_align
2018-12-09 20:52:48 -05:00
Themba Dube
f504d01644 Add lv_ddlist_set_align and lv_ddlist_get_align 2018-12-09 20:51:32 -05:00
embeddedt
e084fb022b Merge pull request #607 from aenchevich/dev-5.3
lv_roller_set_align and some minor bug fixes
2018-12-09 20:41:15 -05:00
embeddedt
3fc3c9d0cf Merge pull request #604 from turoksama/dev-5.3
Add ability to have only one button selected on a list at a time
2018-12-09 20:32:42 -05:00
Themba Dube
e5dabf716a Rename btn_single_selected_mode to single_mode 2018-12-09 20:30:36 -05:00
Themba Dube
739b0d4399 Merge branch 'master' into dev-5.3 2018-12-08 10:02:27 -05:00
embeddedt
92d1e5cefd Merge pull request #613 from embeddedt/dev-5.3
Fix compilation error in lv_chart
2018-12-08 10:01:32 -05:00
Themba Dube
429dca127d Fix compilation error in lv_chart 2018-12-08 09:59:56 -05:00
Themba Dube
303f55f3a3 Merge remote-tracking branch 'upstream/dev-5.3' into dev-5.3 2018-12-08 09:31:47 -05:00
Themba Dube
648c3430ef Add bool single_selected_mode to lv_list_ext_t 2018-12-08 09:22:41 -05:00
Alexander
50fe1ba14d lv_roller_set_align / lv_roller_get_align funcs (user can align the Options: left, right or center) 2018-12-07 15:11:24 +02:00
Samuel
c7846c827b Update lv_list.c
Use setter function enable/disable single selected mode.
2018-12-07 15:22:07 +08:00
Samuel
be8d241e06 Update lv_list.h 2018-12-07 15:21:35 +08:00
Gabor Kiss-Vamosi
545b97de65 Update CONTRIBUTING.md 2018-12-06 22:07:35 +01:00
Alexander
64a2a85077 Compilation error fixes 2018-12-05 11:28:16 +02:00
Gabor Kiss-Vamosi
efa9f0a5d1 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-12-05 06:42:57 +01:00
Gabor Kiss-Vamosi
546262df38 add PRESS action handling to keypad indev 2018-12-05 06:42:37 +01:00
Gabor Kiss-Vamosi
6eb9a636d1 Merge branch 'master' into dev-5.3 2018-12-03 14:52:48 +01:00
Gabor Kiss-Vamosi
33f0900ab7 lv_draw_label: inline recolor bugfix 2018-12-03 14:52:06 +01:00
Samuel
cde5f31135 Update lv_list.h 2018-12-03 19:45:47 +08:00
Samuel
7da01d8683 Update lv_list.c 2018-12-03 19:44:58 +08:00
Gabor Kiss-Vamosi
ccea31d3ab Merge branch 'master' into dev-5.3 2018-12-02 16:49:13 +01:00
Gabor Kiss-Vamosi
aebe5c1dfc lv_img_set_src: bugfix 2018-12-02 16:48:50 +01:00
Gabor Kiss-Vamosi
1efd06ef56 Merge pull request #597 from stheil/master
lv_chart: Use circular buffer to avoid memcopy for every new data point
2018-12-02 12:01:59 +01:00
Gabor Kiss-Vamosi
7d7a85c78f lv_chart:fixes 2018-12-02 09:37:24 +01:00
Gabor Kiss-Vamosi
28c4599436 Merge branch 'master' of https://github.com/stheil/lvgl into stheil-master 2018-12-02 09:07:34 +01:00
Themba Dube
7933435ffc Merge remote-tracking branch 'origin/master' into dev-5.3 2018-12-01 09:44:02 -05:00
embeddedt
1baaf560c5 Merge pull request #600 from ukulili/patch-1
Update lv_conf_templ.h
2018-12-01 09:31:42 -05:00
Cabe Lee
0002d6f833 Update lv_conf_templ.h
Modify "# define _CRT_SECURE_NO_WARNINGS" to "#define _CRT_SECURE_NO_WARNINGS";
2018-12-01 17:48:30 +08:00
Gabor Kiss-Vamosi
0c8782c0ff Merge branch 'master' into dev-5.3 2018-11-30 10:05:51 +01:00
Gabor Kiss-Vamosi
23a0b28326 fix warning 2018-11-30 10:05:30 +01:00
Stefan Theil
8e10f79075 lv_chart: Use circular buffer to avoid memcopy for every new data point
This makes the cost of adding a data point independent of array size.
Changing the array size is more complicated, but that will most likely
happen a lot less than adding a data point.
2018-11-29 22:03:56 +01:00
Gabor Kiss-Vamosi
1e19574645 lv_table: fix 2018-11-29 10:02:34 +01:00
Gabor Kiss-Vamosi
e7058e9135 table updates 2018-11-29 08:52:21 +01:00
Gabor Kiss-Vamosi
c1140ec6a7 begin lv_table 2018-11-28 22:02:51 +01:00
Gabor Kiss-Vamosi
47127e9e4e tileview updates 2018-11-28 20:54:23 +01:00
Gabor Kiss-Vamosi
04e42a8d70 Merge pull request #588 from aenchevich/dev-5.3
Fixing C standard related error, formatting lv_conf_templ.h
2018-11-28 14:37:13 +01:00
Alexander
1d7dd0a227 Fixing C standard related error, formatting lv_conf_templ.h 2018-11-26 18:34:37 +02:00
Gabor Kiss-Vamosi
63b86cab2e lv_anim_bounce updates 2018-11-26 15:04:02 +01:00
Gabor Kiss-Vamosi
9bd7847afb Merge branch 'bounce' into dev-5.3 2018-11-26 15:02:29 +01:00
embeddedt
097a0c4a90 Merge pull request #586 from embeddedt/win_drag
Add `lv_win_set_drag` and `lv_win_get_drag`
2018-11-26 07:18:41 -05:00
Gabor Kiss-Vamosi
916c6b3b2f Merge pull request #585 from kisvegabor/tileview
Tileview: new object type
2018-11-26 10:33:48 +01:00
Gabor Kiss-Vamosi
e82638fa03 Merge pull request #569 from littlevgl/imgbtn_update
lv_imgbtn: add tiling (repeated center) feature
2018-11-26 10:33:23 +01:00
Gabor Kiss-Vamosi
dd26bcb22b Merge pull request #576 from kisvegabor/realign
Add realign feature
2018-11-26 10:33:03 +01:00
Themba Dube
47ec7141ac Merge branch 'dev-5.3' into win_drag 2018-11-25 21:34:51 -05:00
Themba Dube
b42cc9f4ad Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-11-25 21:34:38 -05:00
Themba Dube
4bde73d7a9 Add lv_win_set_drag and lv_win_get_drag 2018-11-25 21:31:54 -05:00
Gabor Kiss-Vamosi
a9eb9f9ea5 tileview asn scroll propagation improvments 2018-11-25 19:40:19 +01:00
Gabor Kiss-Vamosi
2cda0fc1fe Merge branch 'page_flash' of https://github.com/kisvegabor/lvgl into tileview 2018-11-25 12:02:28 +01:00
Gabor Kiss-Vamosi
c62cd4dfcb lv_tileview: add the new object type 2018-11-25 12:02:16 +01:00
Gabor Kiss-Vamosi
c37cd19a23 page edge flah updates 2018-11-25 09:54:13 +01:00
Gabor Kiss-Vamosi
dd8f1c7b38 lv_page: add edge flash animation 2018-11-24 20:31:06 +01:00
Gabor Kiss-Vamosi
3785fc4887 lv_line_draw: compensate y2 coordinate if AA is enabled 2018-11-24 19:05:00 +01:00
Gabor Kiss-Vamosi
f6fb219ab2 lv_calendar: day names padding update 2018-11-24 09:38:10 +01:00
Gabor Kiss-Vamosi
6a2b4a81b5 Merge branch 'dev-5.3' of https://github.com/turoksama/lvgl into dev-5.3 2018-11-24 09:31:18 +01:00
Gabor Kiss-Vamosi
15dae7dcbc define LV_ATTRIBUTE_FLUSH_READY as empty if not defined 2018-11-24 07:49:49 +01:00
Gabor Kiss-Vamosi
e8013a4252 Merge branch 'master' into dev-5.3 2018-11-24 07:42:02 +01:00
Gabor Kiss-Vamosi
f6bc6a0bf6 lv_indev: fix warnings 2018-11-24 07:41:18 +01:00
Gabor Kiss-Vamosi
57dc4ed476 lv_anim_bounce path 2018-11-24 07:38:07 +01:00
Gabor Kiss-Vamosi
9d3f6dacb8 Merge pull request #577 from mharizanov/master
Define a custom attribute to `lv_flush_ready` function
2018-11-24 07:28:00 +01:00
Samuel
cc651d0b4c Update lv_calendar.c 2018-11-24 11:11:36 +08:00
Gabor Kiss-Vamosi
f30f3ea8ed realign: fix warnings 2018-11-23 11:35:13 +01:00
Gabor Kiss-Vamosi
f317ff6d43 Merge pull request #578 from littlevgl/embeddedt-use-uintptr_t
Replace uint64_t with uintptr_t in lv_theme.c
2018-11-23 10:07:50 +01:00
embeddedt
d277e80d81 Replace uint64_t with uintptr_t in lv_theme.c
This resolves #574.
2018-11-22 15:04:35 -05:00
mharizanov
cc801277ce Define a custom attribute to lv_flush_ready function 2018-11-22 19:39:01 +02:00
mharizanov
45cf22ebf5 Define a custom attribute to lv_flush_ready function 2018-11-22 19:36:46 +02:00
Gabor Kiss-Vamosi
ce1a1f749a realign: fix typo 2018-11-22 15:19:22 +01:00
Gabor Kiss-Vamosi
d797d10376 add realign feature 2018-11-22 14:59:38 +01:00
Gabor Kiss-Vamosi
e04a3e7fce Merge branch 'master' into dev-5.3 2018-11-22 11:47:56 +01:00
Gabor Kiss-Vamosi
b8009d7c9a Merge pull request #560 from kisvegabor/indev_data_init
lv_indev: init data before calling of indev_read
2018-11-22 11:46:24 +01:00
Themba Dube
be783a65e0 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-11-21 15:01:35 -05:00
Gabor Kiss-Vamosi
6dc8b2f9f7 Merge branch 'AloyseTech-chart_optimize' into dev-5.3 2018-11-21 15:28:28 +01:00
Gabor Kiss-Vamosi
e37846bdcb Merge branch 'chart_optimize' of https://github.com/AloyseTech/lvgl into AloyseTech-chart_optimize 2018-11-21 15:20:08 +01:00
Gabor Kiss-Vamosi
9b4e5e57d6 Merge branch 'dev-5.3' into imgbtn_update 2018-11-21 14:35:51 +01:00
Gabor Kiss-Vamosi
e68969daa6 Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-11-21 14:01:21 +01:00
Gabor Kiss-Vamosi
c584586985 lv_refr/draw: enable the drawing even with body.opa == LV_OPA_TRANSP
E.g. labels don't care with body paramters
2018-11-21 14:00:30 +01:00
embeddedt
c255e4bf8d Merge pull request #553 from embeddedt/animated_switch
Add animations to switch control
2018-11-21 07:58:48 -05:00
embeddedt
c1c7cfd234 Merge pull request #563 from kisvegabor/lv_btnm_api_ext
add lv_btnm_get_pressed
2018-11-21 07:57:29 -05:00
Gabor Kiss-Vamosi
dc436a66cc lv_imgbtn: add tiled option 2018-11-20 17:05:59 +01:00
Gabor Kiss-Vamosi
699f40c9b2 lv_anim: add overshoot path 2018-11-20 14:49:16 +01:00
Gabor Kiss-Vamosi
84d20442a4 Merge branch 'animated_switch' of https://github.com/embeddedt/lvgl into embeddedt-animated_switch 2018-11-20 07:33:53 +01:00
Gabor Kiss-Vamosi
5416c2b778 lv_sw: aniamtion improvements 2018-11-20 07:33:32 +01:00
Themba Dube
5d09a25abc Merge branch 'animated_switch' of github.com:embeddedt/lvgl into animated_switch 2018-11-19 07:42:11 -05:00
Themba Dube
74f8c0e06a Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into animated_switch 2018-11-19 07:40:32 -05:00
Gabor Kiss-Vamosi
892f2be487 add lv_btnm_get_pressed 2018-11-19 07:00:17 +01:00
Gabor Kiss-Vamosi
bf557a1bb0 lv_sw: add comment 2018-11-19 06:35:11 +01:00
Gabor Kiss-Vamosi
073e99e538 lv_indev: init data before calling of indev_read 2018-11-18 11:54:02 +01:00
Themba Dube
ee544893f6 Merge branch 'master' into dev-5.3 2018-11-17 08:02:49 -05:00
embeddedt
2c8cf7d7ea Update README.md 2018-11-17 08:02:11 -05:00
Gabor Kiss-Vamosi
2c74944566 git push origin dev-5.3Merge branch 'AloyseTech-preload-anim' into dev-5.3 2018-11-17 10:49:39 +01:00
Gabor Kiss-Vamosi
042147b010 add LV_PRELOAD_DEF_ANIM to lv_conf_templ.h 2018-11-17 10:48:17 +01:00
Gabor Kiss-Vamosi
0d3cc14c5e Merge branch 'preload-anim' of https://github.com/AloyseTech/lvgl into AloyseTech-preload-anim 2018-11-17 10:44:29 +01:00
Gabor Kiss-Vamosi
07f2e18dfc lv_sw: animation fixes 2018-11-16 18:36:12 +01:00
Gabor Kiss-Vamosi
938819a8b8 lv_sw: simplify animation 2018-11-16 17:42:29 +01:00
AloyseTech
4de708b5ad add api for setting/getting the animation type of preloader 2018-11-15 11:37:00 +01:00
Themba Dube
65d6c82f81 Add off animation and correct initial switch state 2018-11-14 20:24:13 -05:00
Themba Dube
1da612e8a0 Prevent switch from jumping when clicked 2018-11-14 20:20:35 -05:00
Themba Dube
e6214480c4 Very rough prototype of animated switch 2018-11-14 20:11:32 -05:00
Themba Dube
6de61f3f5b Very rough prototype of animated switch 2018-11-14 20:09:09 -05:00
Gabor Kiss-Vamosi
81634d410b fix version number conflict 2018-11-15 00:33:23 +01:00
Gabor Kiss-Vamosi
7528e2a9b2 start v5.2.1-dev 2018-11-15 00:30:42 +01:00
Gabor Kiss-Vamosi
a9a55321c7 fix version number: release v5.2 2018-11-15 00:21:09 +01:00
Gabor Kiss-Vamosi
4cbd8ea8c9 release v5.3 2018-11-15 00:18:45 +01:00
Gabor Kiss-Vamosi
91f250d4d2 lv_conf.h minor formatting 2018-11-15 00:17:12 +01:00
AloyseTech
5102e71e84 add optimized chart drawing for test 2018-11-15 00:01:05 +01:00
AloyseTech
7b9710aa4e Use define to enable or not double animation on preload 2018-11-14 23:01:22 +01:00
AloyseTech
624939f6ba change the second animation range 2018-11-14 17:33:44 +01:00
AloyseTech
16aaa93e76 Better looking preload animation 2018-11-14 17:00:59 +01:00
Gabor Kiss-Vamosi
7897500c1e lv_group: apply lv_group_refocus update again, because it was overwrittetn from the reverted master 2018-11-14 11:27:15 +01:00
Gabor Kiss-Vamosi
64558e138b Merge branch 'master' into dev-5.3 2018-11-14 11:26:06 +01:00
Gabor Kiss-Vamosi
cc995b625b Merge branch 'dev-5.3' of https://github.com/littlevgl/lvgl into dev-5.3 2018-11-14 11:21:09 +01:00
Gabor Kiss-Vamosi
c81d1b5dd0 lv_group: revert accidentally added merge fron dev-5.3 2018-11-14 10:49:09 +01:00
embeddedt
9ae58caadb Merge pull request #540 from turoksama/dev-5.3
[PR] Add a DOWN symbol within ddlist.
2018-11-11 21:09:10 -05:00
Samuel
f2f7681be2 Update lv_ddlist.c 2018-11-12 10:02:29 +08:00
Gabor Kiss-Vamosi
970d8e813a Merge branch 'master' into dev-5.3 2018-11-11 19:56:44 +01:00
Gabor Kiss-Vamosi
4007834f15 minor fixes 2018-11-11 19:56:30 +01:00
Gabor Kiss-Vamosi
96cd245463 lv_ddlist: minor fixes 2018-11-11 15:16:26 +01:00
Samuel
6742d626e7 Update lv_ddlist.c 2018-11-11 10:16:01 +08:00
Gabor Kiss-Vamosi
e1bde8c730 merge master 2018-11-11 00:03:56 +01:00
Gabor Kiss-Vamosi
b44da3c27f lv_group: fix lv_group_remove_obj() if there is only object is the group 2018-11-11 00:02:44 +01:00
Gabor Kiss-Vamosi
8e70d18a32 lv_ddlist: fix arrow area calculation 2018-11-10 09:16:22 +01:00
Gabor Kiss-Vamosi
f6ce901132 Merge branch 'dev-5.3' of https://github.com/turoksama/lvgl into turoksama-dev-5.3 2018-11-10 07:07:05 +01:00
Themba Dube
4637f4085d Fix compilation error in lv_roller 2018-11-09 16:44:26 -05:00
Themba Dube
134b887adc Add getter function for lv_ddlist_set_draw_arrow 2018-11-09 16:37:40 -05:00
Samuel
4a4d7209ba Update lv_ddlist.c 2018-11-09 21:27:36 +08:00
Samuel
e159e1a8bd Update lv_ddlist.c 2018-11-09 20:32:08 +08:00
Samuel
ac9ee5d1f8 Update lv_roller.c 2018-11-09 20:29:59 +08:00
Samuel
54435fce60 Update lv_ddlist.h 2018-11-09 20:27:59 +08:00
Samuel
4092adbe28 Update lv_ddlist.c 2018-11-09 20:25:48 +08:00
Samuel
06f81e8a61 Update lv_conf_templ.h 2018-11-09 20:13:26 +08:00
Gabor Kiss-Vamosi
e94774ccec Merge branch 'dev-5.3' of https://github.com/turoksama/lvgl into turoksama-dev-5.3 2018-11-09 12:36:58 +01:00
Gabor Kiss-Vamosi
a4d950a2f2 lv_anim: add lv_anim_count_running 2018-11-09 12:36:38 +01:00
Gabor Kiss-Vamosi
63bc66c40d lv_page: remove debug printfs 2018-11-09 07:22:38 +01:00
Gabor Kiss-Vamosi
2a053b86bf lv_ta: with ENCODER show cursor only in edit mode 2018-11-09 07:11:20 +01:00
Gabor Kiss-Vamosi
d643219ee8 lv_group: don't edit the first obj in the group, becuase some indev types (e.g. TP) not supports it 2018-11-09 07:10:10 +01:00
Samuel
74015d6d18 Update lv_conf_templ.h 2018-11-08 23:30:13 +08:00
Samuel
224bd55d50 Update lv_roller.c 2018-11-08 23:28:41 +08:00
Samuel
4f51940274 Update lv_ddlist.c 2018-11-08 23:28:04 +08:00
Samuel
d2263c121a Update lv_ddlist.h 2018-11-08 23:27:30 +08:00
Samuel
075f8740d4 Update lv_ddlist.c 2018-11-08 23:26:43 +08:00
Samuel
8fd442531f Update lv_conf_templ.h 2018-11-08 23:24:23 +08:00
Samuel
4f49061084 Update lv_ddlist.c 2018-11-08 22:47:43 +08:00
Samuel
d02cdc2fec Update lv_ddlist.c 2018-11-08 22:46:20 +08:00
Samuel
29a695b4a6 Add files via upload 2018-11-08 22:39:08 +08:00
Gabor Kiss-Vamosi
9504cb8531 Merge branch 'master' into dev-5.3 2018-11-08 06:23:31 +01:00
Gabor Kiss-Vamosi
8a341d78b1 Merge pull request #539 from C47D/fix_lv_btnm_get_style
Fix lv btnm get style (#513)
2018-11-08 06:21:27 +01:00
Carlos
63075b73bd Add missing = in lv_btnm_get_style function 2018-11-07 21:54:51 -06:00
Carlos
2a27c469fe Fix warning in lv_img_src_get_type 2018-11-07 21:54:18 -06:00
Gabor Kiss-Vamosi
b3c159d968 lv_list: add API for scroll propagation 2018-11-07 20:59:03 +01:00
Gabor Kiss-Vamosi
fa25d7c428 lv_page: scroll propagation buf fix 2018-11-07 20:58:36 +01:00
Gabor Kiss-Vamosi
ba769623be lv_page: add scroll propagation feature 2018-11-07 20:41:52 +01:00
Gabor Kiss-Vamosi
82ff19092b lv_spinbox: fix warnings 2018-11-07 20:41:04 +01:00
Gabor Kiss-Vamosi
e5f59799ee lv_list: use 'last_sel' with encoder too 2018-11-07 17:58:19 +01:00
Gabor Kiss-Vamosi
88392f9bd3 Merge branch 'AloyseTech-spinbox' into dev-5.3 2018-11-07 17:52:22 +01:00
Gabor Kiss-Vamosi
0a3621cdee fix typo 2018-11-07 17:48:50 +01:00
Gabor Kiss-Vamosi
7c32c9c6e7 fix conflicts when merging from master 2018-11-07 17:47:50 +01:00
Gabor Kiss-Vamosi
3f059575ee Merge pull request #529 from joltwallet/rem_last_sel
Remember list last selected
2018-11-07 10:18:50 +01:00
AloyseTech
d4fb9b1343 reverse encoder direction (CCW==decrement, CW==increment) 2018-11-06 17:55:11 +01:00
Brian Pugh
9c2b0ac5ea valid action not necessary to save last_sel 2018-11-06 08:23:57 -08:00
Gabor Kiss-Vamosi
5088e903cb Merge pull request #526 from AloyseTech/single-obj-group
Avoid object defocusing in single group object
2018-11-06 17:01:05 +01:00
Gabor Kiss-Vamosi
5e8a6924b6 Merge pull request #535 from C47D/fix_all_5133
Fixes all functions reported in #513 and add a missing semicolon in #531
2018-11-06 16:50:42 +01:00
Gabor Kiss-Vamosi
7c76a46cbc Remove unused code
Co-Authored-By: AloyseTech <AloyseTech@users.noreply.github.com>
2018-11-06 16:42:30 +01:00
Carlos
fbf44f1991 Fixes all functions reported in #513 and add a missing semicolon in #531 2018-11-05 22:21:20 -06:00
Brian Pugh
e37e0079be Set lv_list last_sel to NULL upon creation 2018-11-05 09:33:05 -08:00
Brian Pugh
96c0050cb8 Remember list last selected 2018-11-05 08:46:51 -08:00
AloyseTech
2c7b51ca56 Add left digit padding handling 2018-11-05 14:48:33 +01:00
AloyseTech
d5747a0379 fix set_digit_format 2018-11-05 14:47:30 +01:00
AloyseTech
b0962095f3 Merge branch 'spinbox' of github.com:AloyseTech/lvgl into spinbox 2018-11-05 14:02:13 +01:00
AloyseTech
77162e7784 Avoid object defocusing in signle group object 2018-11-05 13:15:34 +01:00
AloyseTech
6e116d9e59 Add digit padding feature [WIP] 2018-11-05 11:52:21 +01:00
Gabor Kiss-Vamosi
a81b735016 Merge pull request #522 from C47D/Fix_513
Fixes #513
2018-11-04 20:54:03 +01:00
Gabor Kiss-Vamosi
e5464f5be7 spinbox: formatting 2018-11-04 20:21:51 +01:00
Carlos
d86f8a8981 Fixes #513 2018-11-04 12:24:45 -06:00
Gabor Kiss-Vamosi
deb8048da5 lv_draw_vbasic.c: remove unnecessary cast 2018-11-04 16:11:49 +01:00
AloyseTech
a88ad62af3 Add/fix comment 2018-11-03 18:41:06 +01:00
AloyseTech
8cafd07e0a Remove double api, add increment/decrement api 2018-11-03 18:26:59 +01:00
AloyseTech
46309f7333 update spinbox object when int value change 2018-11-03 18:07:25 +01:00
Gabor Kiss-Vamosi
612c618240 minor fixes 2018-11-02 14:21:10 +01:00
Gabor Kiss-Vamosi
e2bbbefb04 Merge branch 'spinbox' of https://github.com/AloyseTech/lvgl into AloyseTech-spinbox 2018-11-02 13:57:00 +01:00
Gabor Kiss-Vamosi
f1b59388bb Merge branch 'chartSerieClear' of https://github.com/AloyseTech/lvgl into AloyseTech-chartSerieClear 2018-11-02 13:37:23 +01:00
Gabor Kiss-Vamosi
c083150072 lv_list: fix warnings 2018-11-02 12:53:36 +01:00
Gabor Kiss-Vamosi
3353a74e1d Merge branch 'master' of https://github.com/fallstool/lvgl into dev-5.3 2018-11-02 12:50:22 +01:00
Gabor Kiss-Vamosi
79b5b0f1fc lv_list: update comments 2018-11-02 12:45:09 +01:00
Gabor Kiss-Vamosi
ed53728010 Merge branch 'master' into dev-5.3 2018-11-02 12:42:51 +01:00
AloyseTech
0fceadc529 add spinbox object to include list in lvgl.h 2018-11-01 19:45:48 +01:00
AloyseTech
404c52e3c2 create spinbox object, derivating lv_ta 2018-11-01 18:48:13 +01:00
AloyseTech
9b5ec3572e move LV_CHART_POINT_DEF to header and define it to LV_COORD_MIN 2018-11-01 18:40:13 +01:00
fallstool
46b4186216 Update lv_list.c
change the code style
2018-11-01 09:58:55 +08:00
AloyseTech
bcf0a42674 Negative chart point not rendered, add function to clear points from a serie 2018-10-30 17:26:26 +01:00
Gabor Kiss-Vamosi
029d0af946 lv_roller: save preserve the touchpad selected value on defucus 2018-10-30 13:46:49 +01:00
Gabor Kiss-Vamosi
f5e397341d lv_ll: fix comment typo 2018-10-30 13:46:49 +01:00
Gabor Kiss-Vamosi
32843f9f91 lv_roller: save preserve the touchpad selected value on defucus 2018-10-30 13:45:29 +01:00
fallstool
6ecd3f1f8a Update lv_list.c 2018-10-30 18:08:38 +08:00
fallstool
17bc493612 Update lv_list.c 2018-10-30 17:05:27 +08:00
fallstool
34f8013465 Update lv_list.h 2018-10-30 17:04:11 +08:00
fallstool
5b05afe948 Update lv_list.c 2018-10-30 16:38:39 +08:00
fallstool
686c6c9033 Update lv_list.h 2018-10-30 16:38:00 +08:00
Gabor Kiss-Vamosi
04239f9287 lv_ll: fix comment typo 2018-10-30 09:18:45 +01:00
fallstool
e163a796b2 Merge pull request #1 from littlevgl/master
merge
2018-10-30 15:16:19 +08:00
Gabor Kiss-Vamosi
63f1bf2d45 Merge pull request #495 from joltwallet/group_refocus_pr_squashed
Group refocus on deletion
2018-10-28 23:51:19 +01:00
Brian Pugh
0e7d25ba85 Group refocus on deletion 2018-10-28 15:44:58 -07:00
Gabor Kiss-Vamosi
b7792f0aa2 updates from dev-5.3 2018-10-28 23:18:22 +01:00
Gabor Kiss-Vamosi
429a188318 minor fixes in symbol fonts 2018-10-28 23:15:32 +01:00
Gabor Kiss-Vamosi
0ff6026df8 improve page focus styling 2018-10-28 23:14:59 +01:00
Gabor Kiss-Vamosi
984b35e2b0 fix version number conflict 2018-10-28 10:30:22 +01:00
Gabor Kiss-Vamosi
fc319a4502 lv_tabview: add lv_res_t return value to prevent tab laoding on LV_RES_INV 2018-10-28 10:29:06 +01:00
Gabor Kiss-Vamosi
4f11ad7adb lv_draw_img: fix buffer size 2018-10-28 09:07:00 +01:00
Gabor Kiss-Vamosi
436c09aa51 lv_ll: fix comment typo 2018-10-27 11:11:24 +02:00
Gabor Kiss-Vamosi
cd3f6340da add rc tag 2018-10-27 11:11:24 +02:00
Gabor Kiss-Vamosi
78428b523f lv_draw_img: fix to draw images with LV_COLOR_DEPTH 1 2018-10-27 11:11:24 +02:00
Gabor Kiss-Vamosi
f259b56e67 LV_GROUP_KEY_BACKSPACE 2018-10-20 00:43:42 +02:00
Gabor Kiss-Vamosi
e0afb3b8b4 Merge branch 'master' into dev-5.3 2018-10-20 00:39:12 +02:00
Gabor Kiss-Vamosi
e2ddaf7577 add rc tag 2018-10-20 00:38:56 +02:00
Gabor Kiss-Vamosi
63b9c5265f lv_draw_img: fix to draw images with LV_COLOR_DEPTH 1 2018-10-18 06:59:41 +02:00
Gabor Kiss-Vamosi
88b8e982b4 lv_task and lv_ll: stability improvents 2018-10-17 14:31:16 +02:00
Gabor Kiss-Vamosi
bf00102f83 lv_ta: cursor type bit size fix 2018-10-17 12:41:30 +02:00
Gabor Kiss-Vamosi
4751cb16c9 minor fixes 2018-10-17 11:27:31 +02:00
Gabor Kiss-Vamosi
c9111563b1 add lv_cont/page_get_width/height 2018-10-17 11:27:31 +02:00
Gabor Kiss-Vamosi
f7d25a8ee9 Merge pull request #465 from fallstool/master
Update lv_ta.h
2018-10-17 11:13:08 +02:00
fallstool
be24c90532 Update lv_ta.h 2018-10-17 14:20:39 +08:00
Gabor Kiss-Vamosi
3c5093f3cb Merge pull request #460 from ali-rostami/master
action functions for calendar object
2018-10-16 16:37:28 +02:00
Ali Rostami
dd7072c875 pressed_date getter deceleration
A declaration added for pressed_date getter function.
2018-10-16 18:04:43 +03:30
Ali Rostami
6610929eaf pressed date getter
A getter function added for pressed_date.
2018-10-16 18:01:57 +03:30
Gabor Kiss-Vamosi
39395465a2 fix version number 2018-10-16 16:08:13 +02:00
Gabor Kiss-Vamosi
071b10f3f4 lv_calendar: add action API + minor fixes 2018-10-16 14:15:54 +02:00
Gabor Kiss-Vamosi
5a8fb4651c Merge branch 'master' of https://github.com/ali-rostami/lvgl into dev-5.3 2018-10-16 14:07:03 +02:00
Gabor Kiss-Vamosi
eab7a961df Merge branch 'master' into dev-5.3 2018-10-16 14:05:32 +02:00
Ali Rostami
23166f43d7 pressed_date initialization
pressed_date inited in create function.
2018-10-16 08:35:09 +03:30
Gabor Kiss-Vamosi
7427e01b60 lv_group related updates mainly with ENCODER indev 2018-10-15 20:12:12 +02:00
Gabor Kiss-Vamosi
7e4187e89a fixes if an object is deleted in its action 2018-10-15 19:33:34 +02:00
Gabor Kiss-Vamosi
603e9336d4 fixes if the freed memory become dirty 2018-10-15 19:00:03 +02:00
Gabor Kiss-Vamosi
03e6b1bff7 lv_group_remove_obj: stop iterating when the obj is found 2018-10-15 18:22:52 +02:00
Gabor Kiss-Vamosi
d833a65d1e lv_ddlist and lv_roller bugfix when deleted while being in a group 2018-10-15 17:29:15 +02:00
Ali Rostami
e315170c8d init action function
In the lv_calendar_create function, I added some lines to init action functions of the calendar.
2018-10-15 18:14:44 +03:30
Gabor Kiss-Vamosi
c444d43fe8 Merge branch 'master' into dev-5.3 2018-10-15 12:44:39 +02:00
Gabor Kiss-Vamosi
c6d8f8ee28 move the bdf_font_converter to the lv_utils repo 2018-10-15 12:44:17 +02:00
Gabor Kiss-Vamosi
108278c4b5 Merge branch 'master' into dev-5.3 2018-10-15 12:38:27 +02:00
Gabor Kiss-Vamosi
556306a269 add lv_page/cont_fit_width/height functions 2018-10-15 12:38:13 +02:00
Ali Rostami
49b1fe421e Update lv_calendar.h 2018-10-14 14:08:43 +03:30
Ali Rostami
def0169dda Update lv_calendar.c 2018-10-14 14:03:51 +03:30
Gabor Kiss-Vamosi
a482132652 lv_bar and lv_slider: fix indicator size at amy value 2018-10-12 21:12:13 +02:00
Gabor Kiss-Vamosi
4cf6a4c22e Merge pull request #458 from BrianPugh/master
BDF Font Converter
2018-10-12 21:05:27 +02:00
Brian Pugh
10dddd85c5 Documentation update 2018-10-12 09:38:31 -07:00
Brian Pugh
fe24ce53b7 initial bdf font converter 2018-10-12 09:35:46 -07:00
Gabor Kiss-Vamosi
0ee104d155 lv_btnm: ignore clicks on inactive buttons 2018-10-12 09:09:10 +02:00
Gabor Kiss-Vamosi
b6b77f4b45 lv_img_color_format_get_px_size fix for true color apha format 2018-10-11 14:23:03 +02:00
Gabor Kiss-Vamosi
0fdfa32d4a set version number 2018-10-09 17:29:12 +02:00
Gabor Kiss-Vamosi
7d1e1e6147 exclude some code when USE_LV_GROUP 0 2018-10-09 15:10:17 +02:00
Gabor Kiss-Vamosi
a4b4ebaf7d Merge pull request #448 from BrianPugh/master
Add monospace font to makefile
2018-10-09 07:15:37 +02:00
Gabor Kiss-Vamosi
4677c5955d lv_conf_templ.h LV_VDB_PX_BPP comment update 2018-10-09 07:06:51 +02:00
Gabor Kiss-Vamosi
ca7f8e66bb Mark this release as release candidate insted 2018-10-09 07:04:47 +02:00
Brian Pugh
0a6151ade9 added monospace to fonts makefile 2018-10-08 09:40:55 -04:00
Brian Pugh
039deed864 Merge remote-tracking branch 'upstream/master' 2018-10-08 09:39:45 -04:00
Gabor Kiss-Vamosi
83cef11a78 lv_roller: fix for focus change in callback function 2018-10-08 07:28:25 +02:00
Gabor Kiss-Vamosi
0825819586 Merge pull request #445 from ErichStyger/master
removed duplicated define in configuration template file
2018-10-06 12:22:35 +02:00
Erich Styger
2d0c21f8a8 removed duplicated define in configuration template file 2018-10-06 10:41:00 +02:00
Gabor Kiss-Vamosi
41695bf9ac astyle code formatting 2018-10-05 17:22:49 +02:00
Gabor Kiss-Vamosi
23b65ca454 lv_font: add glyph_cnt 2018-10-05 16:00:48 +02:00
Gabor Kiss-Vamosi
96f8392555 set version number 2018-10-05 15:16:04 +02:00
Gabor Kiss-Vamosi
6df5de17c6 solve warnings 2018-10-05 15:15:19 +02:00
Gabor Kiss-Vamosi
a539909972 lv_refr: VDB row height calculation bugfix 2018-10-05 14:44:17 +02:00
Gabor Kiss-Vamosi
85c022e1e7 lv_conf_templ.h minor updates 2018-10-05 10:38:49 +02:00
Gabor Kiss-Vamosi
dd60df83a1 lv_page: improve focus when boith the background and the scrollabe are transparent 2018-10-05 10:10:16 +02:00
Gabor Kiss-Vamosi
e42605590f lv_color: add error for LV_COLOR_DEPTH 24 2018-10-05 09:37:36 +02:00
Gabor Kiss-Vamosi
1a28d8d5d2 lv_conf_templ.h update 2018-10-03 09:00:32 +02:00
Gabor Kiss-Vamosi
b945fc01dd fix incorrent buffer size in img_draw with LV_COMPILER_VLA_SUPPORTED == 0 2018-10-03 08:58:14 +02:00
Gabor Kiss-Vamosi
85bd5a9933 lv_btnm: minor fix on label's position with transparent button style 2018-10-03 08:47:42 +02:00
Brian Pugh
63be4a3dd1 Added mono themes source file to theme submakefile 2018-10-01 19:44:20 -04:00
Gabor Kiss-Vamosi
fbff08080a set the corerct range for symbol fonts 2018-10-01 10:13:24 +02:00
Gabor Kiss-Vamosi
1e37afc49d Merge pull request #436 from airlonyan/patch-1
Update lv_ta_signal in lv_ta.c
2018-09-29 21:14:36 +02:00
rudy yan
23f72ac774 Update lv_ta_signal in lv_ta.c
add code processing LV_SIGNAL_DEFOCUS and LV_SIGNAL_FOCUS signals.
2018-09-29 10:43:53 +08:00
Gabor Kiss-Vamosi
5c1a1d6e94 lv_page: do not force scrl width when scrl fit is false 2018-09-27 16:23:39 +02:00
Gabor Kiss-Vamosi
cef6b09b68 minor theme updates 2018-09-27 15:06:49 +02:00
Gabor Kiss-Vamosi
789532a95f lv_ll_move_before bugfix 2018-09-27 15:03:35 +02:00
Gabor Kiss-Vamosi
be2174b1d2 lv_indev: add some 'focused != NULL' tests 2018-09-26 14:28:49 +02:00
Gabor Kiss-Vamosi
f4449d1c9d minor fixes related to encoder 2018-09-26 14:21:39 +02:00
Gabor Kiss-Vamosi
7c52aa6932 fix warnings 2018-09-25 23:33:17 +02:00
Gabor Kiss-Vamosi
76f663d31c lv_label_draw bugfix in ROLL mode 2018-09-25 16:30:49 +02:00
Gabor Kiss-Vamosi
e18e14f779 add lv_ta_set_text_align() 2018-09-25 16:21:31 +02:00
Gabor Kiss-Vamosi
0a7d5b8e32 lv_group: invalidate object on edit mode change 2018-09-25 11:56:45 +02:00
Gabor Kiss-Vamosi
675715a917 fix warnings 2018-09-25 11:23:50 +02:00
Gabor Kiss-Vamosi
590ca9c7a6 lv_img: make possible to disabel palette and alpha index support 2018-09-25 11:16:37 +02:00
Gabor Kiss-Vamosi
0d07a7be65 fix warnings 2018-09-24 23:14:59 +02:00
Gabor Kiss-Vamosi
d3af29fada LV_INDEV_TYPE_ENCODER added 2018-09-24 22:59:48 +02:00
Gabor Kiss-Vamosi
522d20d9e4 Update README.md 2018-09-24 11:42:32 +02:00
Gabor Kiss-Vamosi
f38ac2cc7d Update README.md 2018-09-24 11:42:13 +02:00
Gabor Kiss-Vamosi
d7654190f7 updates on encoder support 2018-09-24 00:35:19 +02:00
Gabor Kiss-Vamosi
36369325e7 minor fixes for better encoder support 2018-09-23 23:27:28 +02:00
Gabor Kiss-Vamosi
0835e0584a fix warnings 2018-09-23 21:54:55 +02:00
Gabor Kiss-Vamosi
0ef64fde73 lv_img: add logs 2018-09-23 21:24:51 +02:00
Gabor Kiss-Vamosi
0bebaf410a add const prefix to draw_fp variables: px_fp, fill_fp ...) 2018-09-21 14:22:13 +02:00
Gabor Kiss-Vamosi
8712598ca1 lv_conf_templ.h minor updates 2018-09-21 14:16:10 +02:00
Gabor Kiss-Vamosi
258e1f2348 lv_conf_templ.h minor updates 2018-09-21 14:15:26 +02:00
Gabor Kiss-Vamosi
ad553f3782 lv_conf_templ.h minor updates 2018-09-21 14:14:38 +02:00
Gabor Kiss-Vamosi
2b15c6f204 lv_font_dsc_t: minor memory usage optimization 2018-09-21 14:10:53 +02:00
Alexander
0bf87e554c Adding missing #ifdef LV_CONF_INCLUDE_SIMPLE 2018-09-21 14:10:53 +02:00
Gabor Kiss-Vamosi
64d1fcbe9c Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-09-21 12:19:11 +02:00
Gabor Kiss-Vamosi
224550a50c lv_fs_open: fix memory leak 2018-09-21 12:19:05 +02:00
Gabor Kiss-Vamosi
60231ca8d9 lv_img: add log 2018-09-21 10:32:23 +02:00
Gabor Kiss-Vamosi
92acc6d991 Change LV_COLOR_DEPTH 24 to 32 because it's really 32 bit 2018-09-21 07:23:44 +02:00
Gabor Kiss-Vamosi
d2dfabee3f theme updates 2018-09-21 06:56:37 +02:00
Gabor Kiss-Vamosi
a9df82a0af imgbtn copy bugfix 2018-09-20 23:31:26 +02:00
Gabor Kiss-Vamosi
fa683200b5 preloader and arc theme and design updates 2018-09-20 23:31:26 +02:00
Gabor Kiss-Vamosi
044194c64e minor fixes 2018-09-20 23:31:26 +02:00
Gabor Kiss-Vamosi
651fd7b133 add LV_COLOR_SCREEN_TRANSP 2018-09-20 23:31:26 +02:00
Gabor Kiss-Vamosi
f4ac890a3c arc and preload fixes 2018-09-20 23:31:26 +02:00
Gabor Kiss-Vamosi
f7d8cfd5c8 theme: add arc and preload style to some themes 2018-09-20 23:31:26 +02:00
Gabor Kiss-Vamosi
5f14079695 add lv_refr_now() 2018-09-20 22:00:02 +02:00
Gabor Kiss-Vamosi
fa2a36311f lv_fs: add lv_fs_trunc and lv_fs_rename 2018-09-20 22:00:02 +02:00
Gabor Kiss-Vamosi
18988f0059 Merge pull request #415 from fallstool/dev-5.2
lv_cb: fix press lost bug
2018-09-19 21:09:37 +02:00
fallstool
6fce22c555 Update lv_cb.c 2018-09-19 16:32:25 +08:00
fallstool
71fb5185a4 Update lv_cb.c 2018-09-19 16:31:08 +08:00
fallstool
fc3b3d5c96 Update lv_cb.c
fix bug: when out of the range of the checkbox, and press, when move to the checkbox, the checkbox's state will change.
2018-09-19 16:28:23 +08:00
Gabor Kiss-Vamosi
839757e6c8 enum refactor fixes 2018-09-18 14:30:48 +02:00
Zaltora
589e7f28e0 refactoring enum declaration 2018-09-18 13:59:40 +02:00
Gabor Kiss-Vamosi
bf8eb078ca nemo theme fixes 2018-09-18 07:50:05 +02:00
Gabor Kiss-Vamosi
25bd7b13b6 Merge pull request #412 from ajithpv/master
Added a new theme, Fixed Typo and ordered colors
2018-09-18 07:20:49 +02:00
Gabor Kiss-Vamosi
f726622241 Merge branch 'dev-5.2' into master 2018-09-18 07:20:33 +02:00
Ajith
b5806968cb added a new theme based on 'finding nemo' movie 2018-09-17 18:47:19 +05:30
Ajith P Venugopal
602332a97c Fixed minor typos on CONTRIBUTING.md 2018-09-17 17:12:11 +05:30
Ajith P Venugopal
3d95d9a8ee Fixed typo and minor grammar mistakes on README.md 2018-09-17 16:35:41 +05:30
Gabor Kiss-Vamosi
745c6e57c2 Merge pull request #408 from aenchevich/dev-5.2
Removing unused var
2018-09-17 06:23:58 +02:00
Gabor Kiss-Vamosi
21f21dbe75 lv_img: symbol bugfix 2018-09-14 21:58:43 +02:00
Alexander
faeb4b9cd3 Removing unused var 2018-09-14 14:31:28 +03:00
Gabor Kiss-Vamosi
071343da5e Merge pull request #405 from aenchevich/dev-5.2
Fixing some compile-time errors and warning (on mipsel-gcc 4.6)
2018-09-14 12:19:20 +02:00
Alexander
91f4b8f504 Fixing lv_conf.h file include order - it must come first, because
it contains global defines governing which features will be used,
(and in particular - whether the .h file where lv_conf is included
will be used at all).
2018-09-14 12:40:30 +03:00
Gabor Kiss-Vamosi
1391df3948 add LV_VDB_SIZE_IN_BYTES to hide the compilacted expression 2018-09-14 07:33:22 +02:00
Gabor Kiss-Vamosi
5a301bff76 Merge pull request #406 from fallstool/dev-5.2
Update lv_win.h
2018-09-13 22:56:12 +02:00
Gabor Kiss-Vamosi
c8ac841fbb minor fixes 2018-09-13 22:51:42 +02:00
Gabor Kiss-Vamosi
9c601ef49b indev fix: don't send release signal if the release happend next to a press lost protected object 2018-09-13 22:50:10 +02:00
Gabor Kiss-Vamosi
4c2ccf1d6b preload: fix style usage 2018-09-13 22:13:00 +02:00
Gabor Kiss-Vamosi
16e7e4403e minor comment changes 2018-09-13 22:11:09 +02:00
Alexander
47dacc09ef Adding missing #ifdef LV_CONF_INCLUDE_SIMPLE 2018-09-13 15:09:05 +03:00
fallstool
4479080864 Update lv_win.h
arm cross compile error: invalid conversion from void* to lv_win_ext_t*
2018-09-13 16:41:59 +08:00
Gabor Kiss-Vamosi
73695aa413 lv_arc: use line styles 2018-09-13 00:57:20 +02:00
Gabor Kiss-Vamosi
d6793e792d line draw bugfix: skew lines' width was incorrect 2018-09-13 00:56:25 +02:00
Gabor Kiss-Vamosi
89e946cc51 add lv_calendar to themes 2018-09-12 23:34:23 +02:00
Gabor Kiss-Vamosi
17785070a4 bugfix type in comment 2018-09-12 21:17:55 +02:00
Gabor Kiss-Vamosi
0cd6c6eb08 Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-09-12 20:56:38 +02:00
Gabor Kiss-Vamosi
9780277e48 Merge branch 'master' of https://github.com/littlevgl/lvgl into dev-5.2 2018-09-12 20:56:16 +02:00
Alexander
a6b3addb4f Fixing some compile-time errors and warning (on mipsel-gcc 4.6) 2018-09-12 18:55:28 +03:00
Ajith
17d2782182 added a new theme named nemo 2018-09-12 18:02:08 +05:30
Ajith P Venugopal
086dac4444 Ordered the colors and fixed the typo
The color definitions are ordered according to the HTML color names (https://en.wikipedia.org/wiki/Web_colors). Fixed the typo of the color maroon
2018-09-12 15:38:58 +05:30
Gabor Kiss-Vamosi
9777cf3416 add lv_vdb_set_adr 2018-09-12 09:03:48 +02:00
Gabor Kiss-Vamosi
a89548ed48 Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-09-11 15:33:18 +02:00
Gabor Kiss-Vamosi
7abfa7609e shadow draw bugifx 2018-09-11 14:58:33 +02:00
Gabor Kiss-Vamosi
e332e8586f theme: begin to add calendar to themes 2018-09-10 21:32:08 +02:00
Gabor Kiss-Vamosi
d06c2f93da lv_calendar: minor fixes 2018-09-10 21:30:44 +02:00
Gabor Kiss-Vamosi
4b25f24175 lv_win: revert the delete of page (content) specific API function 2018-09-10 21:30:25 +02:00
Gabor Kiss-Vamosi
b894c423d3 Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-09-10 06:27:10 +02:00
Gabor Kiss-Vamosi
c84f114dd6 rename lv_...clear to lv_..._clean 2018-09-07 17:09:09 +02:00
Gabor Kiss-Vamosi
61a2540ed4 rename LV_IMG_FORMAT_... to LV_IMG_CF_... 2018-09-06 21:15:29 +02:00
Gabor Kiss-Vamosi
4db5e54737 add lv_imgbtn 2018-09-06 20:57:59 +02:00
Gabor Kiss-Vamosi
59464fa41b Merge pull request #397 from koutheir/patch-1
Fixed a typo
2018-09-06 10:11:13 +02:00
Dr. Koutheir Attouchi
6d2a69113b Fixed a typo 2018-09-06 09:57:10 +02:00
Gabor Kiss-Vamosi
467fd77a28 lv_theme: add live update feature 2018-09-06 01:29:21 +02:00
Gabor Kiss-Vamosi
54f6e42a44 lv_label: LONG_ROLL and ALIGN_CENTER undate 2018-09-05 23:53:29 +02:00
Gabor Kiss-Vamosi
b9a295afaf report_style_mod_core bugfix 2018-09-05 11:42:18 +02:00
Gabor Kiss-Vamosi
f49dcdd62a lv_label_set_long_mode: add comment about size should be set after it 2018-09-04 07:30:18 +02:00
Gabor Kiss-Vamosi
42722d0fd6 refresh the top and sys layers if LV_VDB_SIZE = 0 too 2018-09-04 07:25:07 +02:00
Gabor Kiss-Vamosi
aa83d9109b lv_gauge: add comments about how to calculate the line_cnt 2018-09-04 07:03:47 +02:00
Gabor Kiss-Vamosi
8db4e97d65 code formating 2018-09-03 16:02:54 +02:00
Gabor Kiss-Vamosi
657a3b76c5 add LV_SYMBOL_DUMMY (if added before a string then lv_img will draw it as a label) 2018-09-03 15:56:57 +02:00
Gabor Kiss-Vamosi
cafdce69fe add LV_PROTECT_CLICK_FOCUS 2018-09-03 15:45:12 +02:00
Gabor Kiss-Vamosi
298cba3c01 Merge branch 'img_decoder' into dev-5.2 2018-09-03 14:55:24 +02:00
Gabor Kiss-Vamosi
f6173cdb0d rename lv_..._clean to lv_..._clear 2018-09-03 14:43:43 +02:00
Gabor Kiss-Vamosi
025b829638 lv_img_draw: add alpha bin support 2018-09-02 23:04:23 +02:00
Gabor Kiss-Vamosi
a50b6f56d5 Merge pull request #384 from Krastanov/external_ticks
Add a system time callback to be used without `lv_tick_inc`.
2018-08-31 07:24:10 +02:00
Stefan Krastanov
4e70bbc49f Add a system time callback to be used without lv_tick_inc.
With a new configuration option one can now remove the need for
repeatedly calling `lv_tick_inc` for hardware that already provides
system time in another way.

The configuration example is set for an Arduino, but this was initially
developed for an nrf52 with the following config:

```
 #define LV_TICK_CUSTOM    1
 #if LV_TICK_CUSTOM == 1
 #define LV_TICK_CUSTOM_INCLUDE  "app_timer.h"
 #define LV_TICK_CUSTOM_SYS_TIME_EXPR (app_timer_cnt_get()/APP_TIMER_TICKS(1))
 #endif     /*LV_TICK_CUSTOM*/
```
2018-08-29 15:13:51 -04:00
Gabor Kiss-Vamosi
32805d8e36 lv_bar: don't draw indicator if cur_value == min_value 2018-08-29 20:59:48 +02:00
Gabor Kiss-Vamosi
20ab09a1d5 lv_btn: ink bugfix 2018-08-29 20:42:38 +02:00
Gabor Kiss-Vamosi
225afe0d6d lv_obj.h: fic lv_prot_t typos 2018-08-28 14:43:02 +02:00
Gabor Kiss-Vamosi
c335e46384 add mutex to lv_task_handler to avoid concurent call 2018-08-28 14:41:32 +02:00
Gabor Kiss-Vamosi
fe7971759c fix typo (#382) 2018-08-28 08:04:42 +02:00
Gabor Kiss-Vamosi
d4b8fab303 Merge pull request #381 from pfalcon/patch-1
README: Clarify lv_tick_inc() usage.
2018-08-28 07:43:06 +02:00
Gabor Kiss-Vamosi
55ae32362e lv_list. make lv_list_get_next/prev_btn() public 2018-08-27 19:55:17 +02:00
Paul Sokolovsky
db6d15624d README: Clarify lv_tick_inc() usage.
"in" word is not needed there.

Also, update number of steps in "Porting" section.
2018-08-27 08:19:33 +03:00
Gabor Kiss-Vamosi
4e6c0b6976 Update README.md 2018-08-26 19:24:41 +02:00
Gabor Kiss-Vamosi
87fd28f0c2 lv_mbox: add comment about the action callback parameters 2018-08-26 17:04:31 +02:00
Gabor Kiss-Vamosi
8e0dc2055f lv_obj_Set_style: bugfux 2018-08-26 17:04:10 +02:00
Gabor Kiss-Vamosi
d8d583ee57 lv_win:get_contet added instead of lv_page wrappers 2018-08-26 15:55:22 +02:00
Gabor Kiss-Vamosi
f0753a82b5 Merge branch 'img_decoder' of https://github.com/littlevgl/lvgl into img_decoder 2018-08-26 14:22:26 +02:00
Gabor Kiss-Vamosi
372605440c lv_btn_ink updates
lv_btn_ink updates
2018-08-26 14:21:48 +02:00
Gabor Kiss-Vamosi
b39a802336 lv_img_draw: support indexed images from file 2018-08-22 01:33:46 +02:00
Gabor Kiss-Vamosi
bc430db812 Update README.md 2018-08-21 08:40:12 +02:00
Gabor Kiss-Vamosi
6f308aba11 lv_img_dsc_t: add data_size filed 2018-08-20 22:54:37 +02:00
Gabor Kiss-Vamosi
1714caae58 Merge branch 'img_decoder' of https://github.com/littlevgl/lvgl into img_decoder 2018-08-20 22:25:40 +02:00
Gabor Kiss-Vamosi
1ec7d264cf image decoder bugfixes 2018-08-20 22:25:28 +02:00
Gabor Kiss-Vamosi
27a082c325 lv_btn: copy ink paramters too 2018-08-20 10:56:17 +02:00
Gabor Kiss-Vamosi
25a6b0cde6 lv_color.h: delete unused commented code 2018-08-20 10:45:17 +02:00
Gabor Kiss-Vamosi
415a176f6b Merge pull request #372 from pfalcon/patch-1
README: Typo/punctuation/grammar fixes
2018-08-19 01:46:28 +02:00
Gabor Kiss-Vamosi
9d844ef113 indexed imgade draw added 2018-08-19 00:45:57 +02:00
Paul Sokolovsky
40c70cf06b README: Typo/punctuation/grammar fixes 2018-08-18 22:53:44 +03:00
Gabor Kiss-Vamosi
9337cb591d built in img dacoder improvements 2018-08-18 12:11:02 +02:00
Gabor Kiss-Vamosi
91385e13eb add image decoder interface (wip) 2018-08-16 00:15:19 +02:00
Gabor Kiss-Vamosi
1bf8ad6366 Merge branch 'dev-5.2' into img_decoder 2018-08-15 22:13:03 +02:00
Gabor Kiss-Vamosi
507235a681 minor formatting 2018-08-15 12:36:35 +02:00
Gabor Kiss-Vamosi
e96bbdd31a lv_obj_set_parent: test input paramters 2018-08-15 12:33:11 +02:00
Gabor Kiss-Vamosi
ad79620983 Merge pull request #362 from ErichStyger/dev-5.2
fixed wrong comment
2018-08-14 09:16:55 +02:00
Gabor Kiss-Vamosi
1b800e2499 remove debug printfs 2018-08-14 01:22:17 +02:00
Gabor Kiss-Vamosi
eaef1c70d6 begin indexed interface 2018-08-14 01:20:18 +02:00
Gabor Kiss-Vamosi
f12c24ce0a lv_ta_set/get_action added 2018-08-13 19:09:46 +02:00
Gabor Kiss-Vamosi
e9eeb767e4 Merge pull request #357 from ErichStyger/dev-5.2
fixed name for lv_theme_get_night()
2018-08-13 10:37:25 +02:00
Erich Styger
37f38b3211 fixed wrong comment 2018-08-13 06:34:00 +02:00
Erich Styger
0297bb1870 fixed name for lv_theme_get_night() 2018-08-12 18:12:17 +02:00
Gabor Kiss-Vamosi
e33f3e31bc Merge pull request #351 from Zaltora/fix_attribute
[dev-5.2] Fix attribute
2018-08-10 14:55:52 +02:00
Zaltora
1e20118645 add backward 'lv_conf.h' compatibility 2018-08-10 13:18:10 +02:00
Zaltora
1ece6c1612 Merge branch 'dev-5.2' into fix_attribute 2018-08-10 13:13:54 +02:00
Gabor Kiss-Vamosi
d8c88fa510 lv_ddlist: fix wrong declration lv_ddlist_close in lv_ddlist.h 2018-08-10 01:22:42 +02:00
Gabor Kiss-Vamosi
e9abfe3cc8 minor lv_page and lv_ddlist fixes 2018-08-10 01:11:20 +02:00
Gabor Kiss-Vamosi
1fa580f6f0 lv_page: add LV_SB_MODE_HIDE/UNHIDE and use it in ddlist 2018-08-10 01:04:20 +02:00
Gabor Kiss-Vamosi
a4812c4706 add missing defines to lv_font_symbol_30 2018-08-09 23:46:38 +02:00
Gabor Kiss-Vamosi
b521c8b97e lv_ta: check all characters in lv_ta_add/set_text agains accapted chars and max length 2018-08-09 23:37:00 +02:00
Gabor Kiss-Vamosi
b0f7aeabbb Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-08-09 20:42:06 +02:00
Gabor Kiss-Vamosi
604ee63096 lv_indev_get_key() added 2018-08-09 07:30:10 +02:00
Gabor Kiss-Vamosi
8fbf1267a5 lv_draw_shadow fixed 2018-08-09 07:20:23 +02:00
Gabor Kiss-Vamosi
31ad141f7e lv_draw_shadow fixes (wip) 2018-08-08 09:50:21 +02:00
Gabor Kiss-Vamosi
e7f55612b0 basics image decoder interface impemented (wip) 2018-08-08 09:50:01 +02:00
Gabor Kiss-Vamosi
9b2097e5e4 add LV_COLOR_16_SWAP option 2018-08-07 08:20:34 +02:00
Gabor Kiss-Vamosi
73bc138b70 opacity related bug fixes in draw functions 2018-08-06 15:22:46 +02:00
Zaltora
58134f78dc multiple definition LV_ATTRIBUTE_TICK_INC 2018-08-06 10:12:38 +02:00
Gabor Kiss-Vamosi
8105bced11 img_if: formattig 2018-08-04 22:24:16 +02:00
Gabor Kiss-Vamosi
bcba74d0e7 revert built-in styles (there were some test values in them) 2018-08-04 22:13:34 +02:00
Gabor Kiss-Vamosi
b352e67088 add lv_page_scroll_up/down() and lv_win_scroll_up/down() 2018-08-04 21:48:40 +02:00
Gabor Kiss-Vamosi
1561b7a08a lv_ta: fixes with USE_LV_ANIMATION 0 2018-08-04 09:04:37 +02:00
Gabor Kiss-Vamosi
586fbbe925 Merge branch 'app_vdb' into dev-5.2 2018-08-04 08:49:01 +02:00
Gabor Kiss-Vamosi
c4e26724a4 lv_ta: fix init value of max_length and accepted_chars 2018-08-04 08:48:47 +02:00
Gabor Kiss-Vamosi
5931c23695 lv_ta: add 'max_length' and 'accepted_chars' features 2018-08-04 08:46:44 +02:00
Gabor Kiss-Vamosi
7a2693e4f1 minor fixes 2018-08-04 08:45:22 +02:00
Gabor Kiss-Vamosi
f968792286 add the optional VDB write interface to the display driver (vdb_wr) 2018-08-04 01:46:00 +02:00
Gabor Kiss-Vamosi
fbf0303b2d lv_list: add lv_list_set/get_btn_selected() 2018-07-30 07:42:36 +02:00
Gabor Kiss-Vamosi
390ef3b2ba add 'const' in lv_obj_align 2018-07-30 06:57:58 +02:00
Gabor Kiss-Vamosi
c2712963d6 merge beta 2018-07-30 06:56:31 +02:00
Gabor Kiss-Vamosi
769c7b28ff add 'const' attribute to pointer where possible 2018-07-30 06:52:29 +02:00
Gabor Kiss-Vamosi
a005d832cb fix declaration of real draw function pointers 2018-07-29 23:26:56 +02:00
Gabor Kiss-Vamosi
c9508d9b7e fix opa calcualtion from opa_scale in draw_function 2018-07-29 21:53:22 +02:00
Gabor Kiss-Vamosi
39ba305f73 lv_mem: remove ENVIRONMENT32 only leave ENVIRONMENT64 define 2018-07-27 06:48:44 +02:00
Gabor Kiss-Vamosi
857becbd66 lv_draw fiw redecleration of px_fp, fill_fp etc 2018-07-27 06:39:59 +02:00
Gabor Kiss-Vamosi
412710884c lv_conf_templ updated 2018-07-26 00:31:07 +02:00
Gabor Kiss-Vamosi
15fa3beb6d lv_conf_templ updated 2018-07-26 00:30:36 +02:00
Gabor Kiss-Vamosi
81a20ef328 add character encoder interface issue #131 2018-07-26 00:10:20 +02:00
Gabor Kiss-Vamosi
bcd583914f LV_LABEL_ALIGN_RIGHT bug fix 2018-07-25 23:01:29 +02:00
Gabor Kiss-Vamosi
a1abe14414 add lv_font_monospace_8 (uniscii) as built-in font 2018-07-25 22:57:36 +02:00
Gabor Kiss-Vamosi
7cc8e74d1a add editable attribute for better encoder control 2018-07-25 21:52:50 +02:00
Gabor Kiss-Vamosi
678cbdc23d improve logging 2018-07-25 20:39:24 +02:00
Gabor Kiss-Vamosi
2d5fa3b9dc remove LV_TXT_FLAG_NO_BREAK. Text area in one line mode handle's it in its own 2018-07-25 19:36:53 +02:00
Gabor Kiss-Vamosi
c4aec5ae33 update lv_long in lv_conf_templ.h 2018-07-25 17:58:34 +02:00
Gabor Kiss-Vamosi
69434c8b7d place some lv_log_add calls 2018-07-25 17:57:08 +02:00
Gabor Kiss-Vamosi
2d8b3b2b6e add lv_mem_assert to memory reallocations 2018-07-25 14:43:46 +02:00
Gabor Kiss-Vamosi
2e17562e51 add lv_mem_assert to memory allocations 2018-07-25 13:33:53 +02:00
Gabor Kiss-Vamosi
405acfcbba lv_mem: remove debug printf 2018-07-25 12:24:47 +02:00
Gabor Kiss-Vamosi
e6516c3a90 lv_mem: fix 8 byte alignment 2018-07-25 11:37:01 +02:00
Gabor Kiss-Vamosi
1b9845e38f lv_mem: support 8 byte aligned alloaction 2018-07-25 06:52:59 +02:00
Gabor Kiss-Vamosi
818cd278b2 lv_label_no_break: fixes 2018-07-25 06:12:05 +02:00
Gabor Kiss-Vamosi
1fa77fa5d7 lv_obj: apply theme on non-screen base objects too 2018-07-22 22:34:28 +02:00
Gabor Kiss-Vamosi
6d9888462c lv_task: fix misspelling 2018-07-22 22:03:38 +02:00
Gabor Kiss-Vamosi
d7c9193662 Merge pull request #322 from yuanzhaoming/beta
Fix misspelt comments
2018-07-22 21:12:15 +02:00
Gabor Kiss-Vamosi
de3ef5fc1f Merge branch 'beta' into beta 2018-07-22 21:11:38 +02:00
wit_yuan
97f3ed08c0 change the comment at line 149,154 2018-07-22 11:12:47 +08:00
wit_yuan
d0b5c705bf change line 50 'fir' to 'fit' 2018-07-21 16:09:51 +08:00
Gabor Kiss-Vamosi
d094d0262b draw shadow fix (line_2d_blur was overindexed) 2018-07-18 23:46:41 +02:00
Gabor Kiss-Vamosi
8b70eccca6 draw shadow fix (line_2d_blur was overindexed) 2018-07-18 23:45:00 +02:00
Gabor Kiss-Vamosi
8005f1bb28 merge beta 2018-07-18 23:19:45 +02:00
Gabor Kiss-Vamosi
dc4541f267 fix a typo of LV_COMPILER_VLA_SUPPORTED in lv_draw.c 2018-07-18 23:16:42 +02:00
Gabor Kiss-Vamosi
edf94bf1b2 rename lv_area_union to lv_area_intersect 2018-07-17 16:40:52 +02:00
Gabor Kiss-Vamosi
f4a66c4b22 add LV_GROUP_KEY_DEL 2018-07-17 00:22:43 +02:00
Gabor Kiss-Vamosi
4e2f371fc9 lv_indev: make possible to delete objects in the read function 2018-07-16 23:24:34 +02:00
Gabor Kiss-Vamosi
3fec97db45 lv_conf_templ.h: fix typo 2018-07-15 16:52:14 +02:00
kisvegabor
6e7cc4414a fix non const initialization 2018-07-13 21:54:11 +02:00
kisvegabor
8746d3de45 fix non const initialization 2018-07-13 21:47:56 +02:00
kisvegabor
f803f8b92a Merge branch 'master' into beta 2018-07-13 21:41:12 +02:00
kisvegabor
0a4c00c5f2 lv_conf_templ: add config option for Visual Studio 2018-07-13 21:40:56 +02:00
Gabor Kiss-Vamosi
4773dfd53f add LV_FONT_CUSTOM_DECLARE only if defined 2018-07-13 13:54:41 +02:00
Gabor Kiss-Vamosi
fecc974ade lv_group: click_focus improvements 2018-07-13 00:37:28 +02:00
Gabor Kiss-Vamosi
43ec140124 lv_list: make the clicked button selected if the list is in a group 2018-07-13 00:01:10 +02:00
Gabor Kiss-Vamosi
d483d14c8e lv_group: add click_focus option 2018-07-12 23:38:27 +02:00
Gabor Kiss-Vamosi
9a28e559a4 merge beta 2018-07-12 19:09:57 +02:00
Gabor Kiss-Vamosi
29e810dd2a Merge pull request #309 from hydra/fix-page-performance-issue
Fix incorrect calculation of area that needs to be invalidated for the scrollbars.
2018-07-12 18:35:37 +02:00
Gabor Kiss-Vamosi
cfc811900d send LV_SIGNAL_LONG_PRESS on LV_GROUP_KEY_ENTER long press 2018-07-12 18:18:43 +02:00
Dominic Clifton
43cfd5fea5 Fix incorrect calculation of area that needs to be invalidated for the scrollbars. 2018-07-12 17:18:50 +02:00
Gabor Kiss-Vamosi
bac918d4c8 lv_btn: use opa_scale in the design function 2018-07-11 20:27:56 +02:00
Gabor Kiss-Vamosi
e0c600eb14 lv_ink: draw circle at the beginning until it is possible (fnt into the button) 2018-07-11 20:20:08 +02:00
Gabor Kiss-Vamosi
d67096f58c lv_draw_label: trim the traling whitespaces when aligned to the middle 2018-07-11 19:07:16 +02:00
Gabor Kiss-Vamosi
fde3ee73af lv_txt_get_width: don't trim the closing spaces because it would result unwanted text wrap 2018-07-11 19:05:08 +02:00
Gabor Kiss-Vamosi
9c0bb3d392 lv_draw_label: trim the traling whitespaces when aligned to the middle 2018-07-11 18:56:54 +02:00
Gabor Kiss-Vamosi
8a7a966a7b lv_txt_get_width: don't trim the closing spaces because it would result unwanted text wrap 2018-07-11 18:46:49 +02:00
Gabor Kiss-Vamosi
4b44e07188 lv_btn ink: start from the clicked point 2018-07-08 09:03:33 +02:00
Gabor Kiss-Vamosi
9676c2e486 lv_btn ink improvements and fixes 2018-07-08 03:25:07 +02:00
Gabor Kiss-Vamosi
5e8c1d0221 lv_btn ink improvements 2018-07-08 02:01:58 +02:00
Gabor Kiss-Vamosi
08a17fd5b2 lv_btn: fix typo in API 2018-07-08 01:13:36 +02:00
Gabor Kiss-Vamosi
a78df87f8e update the new objects with LV_CONF_INCLUDE_SIMPLE 2018-07-08 01:12:20 +02:00
Gabor Kiss-Vamosi
ddd2b740c8 add API to set ink time 2018-07-08 01:11:59 +02:00
Gabor Kiss-Vamosi
87de768af4 Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-07-08 01:02:46 +02:00
Gabor Kiss-Vamosi
a23a6f7c90 Merge branch 'beta' into dev-5.2 2018-07-08 01:01:05 +02:00
Gabor Kiss-Vamosi
2c1255ffb6 lv_btn: add ink effect support 2018-07-08 01:00:56 +02:00
Gabor Kiss-Vamosi
bcab0ffcc6 lv_tabview: fix return to the original tab on small slideing 2018-07-07 22:24:47 +02:00
Gabor Kiss-Vamosi
dbc7957a50 merge beta 2018-07-07 12:45:50 +02:00
Gabor Kiss-Vamosi
41dbff4d76 initialize the built-in fonts in a spearete file 2018-07-07 12:43:57 +02:00
Gabor Kiss-Vamosi
a6ee4a680c move lv_fonts from lv_misc next to lv_misc 2018-07-07 12:21:36 +02:00
Gabor Kiss-Vamosi
90679c2cf5 add LV_CONF_INCLUDE_SIMPLE to choose between relative or simple include of lv_conf.h 2018-07-07 11:53:22 +02:00
Gabor Kiss-Vamosi
dd9324ac05 lv_conf.h: add LV_FONT_CUSTOM_DECLARE to enable global defination of custom fonts 2018-07-07 11:26:24 +02:00
Gabor Kiss-Vamosi
94702f63ff Merge pull request #299 from aenchevich/beta
fix compile errors related to USE_LV_ANIMATION, format code
2018-07-07 09:05:03 +02:00
Gabor Kiss-Vamosi
b65b03765d Update CONTRIBUTING.md 2018-07-07 08:58:49 +02:00
Gabor Kiss-Vamosi
c4eaa1359d add log interface (lv_log) but still there are no log messages added 2018-07-07 08:54:40 +02:00
Gabor Kiss-Vamosi
48375bb780 Merge branch 'beta' into dev-5.2 2018-07-07 08:09:14 +02:00
Alexander Enchevich
70d5e5a012 Code formatting 2018-07-06 17:12:06 +03:00
Alexander Enchevich
8083432925 fix compile errors related to USE_LV_ANIMATION 2018-07-06 16:29:45 +03:00
Gabor Kiss-Vamosi
a4a210c9e5 lv_page_focus: delete all positioning animations to be sure the new focus won't be overwritten 2018-07-03 14:27:53 +02:00
Gabor Kiss-Vamosi
7bd4775b01 lv_page: add scrolling on LV_GROUP_KEY_UP/DOWN/LEFT/RIGHT 2018-07-03 14:19:04 +02:00
Gabor Kiss-Vamosi
75878b96e6 Update CONTRIBUTING.md 2018-07-02 20:04:21 +02:00
Gabor Kiss-Vamosi
3379467484 Update CONTRIBUTING.md 2018-07-02 20:02:32 +02:00
Gabor Kiss-Vamosi
930673c2f2 Update CONTRIBUTING.md 2018-07-02 20:02:04 +02:00
Gabor Kiss-Vamosi
dd7c562c96 lv_ddlist: fix the selection of options with non ASCII characters 2018-06-26 18:30:38 +02:00
Gabor Kiss-Vamosi
46ae9146d8 lv_font: add monospace support 2018-06-22 23:32:21 +02:00
Gabor Kiss-Vamosi
7503242a6a lv_anim bugfix: was error when the object is delete end callback 2018-06-22 22:58:26 +02:00
Gabor Kiss-Vamosi
7db7482ac5 fixes in lv_roller, lv_ddlist design to be pixel prefect 2018-06-21 22:15:19 +02:00
Gabor Kiss-Vamosi
a659d40202 merge beta 2018-06-19 15:45:28 +02:00
Gabor Kiss-Vamosi
11dcf5b970 lv_slider_design bugfix 2018-06-19 12:08:55 +02:00
Gabor Kiss-Vamosi
3484cb7964 lv_draw: SHADOW_OPA_EXTRA_PRECISION to 8 (was 0) 2018-06-19 12:08:43 +02:00
Gabor Kiss-Vamosi
880171aa08 group: fix typo and the defult style_mod_edit_cb for monochrome displays 2018-06-19 11:19:26 +02:00
Gabor Kiss-Vamosi
ab0b60c584 lv_group: add edit feature (change to edit moed on ENTER long press) 2018-06-19 11:13:03 +02:00
Gabor Kiss-Vamosi
76bc18cb12 Merge branch 'beta' into dev-5.2 2018-06-19 10:15:13 +02:00
Gabor Kiss-Vamosi
12237142da move astyle files to docs and add it's README to CONTRIBUTING.md 2018-06-19 10:14:31 +02:00
Gabor Kiss-Vamosi
3c2dca13ab merge formatted beta 2018-06-19 10:03:29 +02:00
Gabor Kiss-Vamosi
383ce0599e format with astyler 2018-06-19 09:49:58 +02:00
Gabor Kiss-Vamosi
175f06a7f9 lv_calendar: add opa_scale support 2018-06-19 09:33:32 +02:00
Gabor Kiss-Vamosi
c33a26b2f9 Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-06-19 09:07:10 +02:00
Gabor Kiss-Vamosi
dc918930ab merge beta 2018-06-19 09:06:49 +02:00
Gabor Kiss-Vamosi
a7d616c224 lv_task bugfix: not call tasks with LV_TASK_PRIO_OFF 2018-06-19 08:49:34 +02:00
Gabor Kiss-Vamosi
df598675fb use opa_scale in cover check 2018-06-19 08:49:02 +02:00
Alexander
5ff4125c56 Formatting all header files (*.h) in accordance with project coding style, using the astyle tool and the rules file _astylerc-h. 2018-06-18 13:52:14 +03:00
Alexander
8e9335d49f Formatting all source file (*.c) in accordance with project coding style, using the astyle tool and the rules file _astylerc-c. 2018-06-18 13:51:01 +03:00
Alexander
6038064e71 Preparing repo for semi-automatic code formatting in accordance with project coding style, using the astyle open source tool. Creating README.astyle and 2 astyle config files containing rules for format of .c and .h files 2018-06-18 13:49:39 +03:00
Gabor Kiss-Vamosi
4ac1c29ca9 lv_group_remove_obj: fix when delete the last object from the group 2018-06-17 16:43:32 +02:00
Gabor Kiss-Vamosi
31b3a2a350 tabview: fix unwanted sending of tab change action on page click 2018-06-16 13:03:32 +02:00
Gabor Kiss-Vamosi
2e2f5bc165 lv_anim: bugfix when animation is ready 2018-06-15 12:41:17 +02:00
Gabor Kiss-Vamosi
49a54e0978 Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-06-15 09:29:26 +02:00
Gabor Kiss-Vamosi
bf366ea075 lv_stye: style anim return with the dsc 2018-06-15 09:29:10 +02:00
Gabor Kiss-Vamosi
1cf5d5db9e lv_theme_mono: add more line space to ddlist and roller 2018-06-14 20:54:47 +02:00
Gabor Kiss-Vamosi
73c83cbd25 lv_ddlist: fix incorrect hegiht on style change 2018-06-14 20:05:15 +02:00
Gabor Kiss-Vamosi
001fcb43e7 fix misplaced line in lv_draw_rect.c 2018-06-14 13:20:10 +02:00
Gabor Kiss-Vamosi
75ea3b9edb add opa_scale attribute 2018-06-14 13:08:19 +02:00
Gabor Kiss-Vamosi
2a15cffbb9 lv_obj_del: remove from the group before delete the children (DEFOCUS might need children) 2018-06-14 11:17:49 +02:00
Gabor Kiss-Vamosi
1eb3e1711a lv_arc: add rounding feature 2018-06-13 11:08:19 +02:00
Gabor Kiss-Vamosi
1cac01280a Merge pull request #272 from upbeat27/bar_slider_max_fix
Small fix for bar/slider to make the fill more symmetric when near the min/max
2018-06-12 12:45:50 +02:00
Gabor Kiss-Vamosi
3d315a891b Merge pull request #271 from upbeat27/page_focus_fix
Fix page focus not focusing objects the same way when moving up or down the page
2018-06-12 12:44:17 +02:00
Gabor Kiss-Vamosi
bed22463dc lv_preloader: use anchestor design functions 2018-06-12 09:30:58 +02:00
Gabor Kiss-Vamosi
90f97f14ee Merge branch 'dev-5.2' of https://github.com/littlevgl/lvgl into dev-5.2 2018-06-12 09:23:05 +02:00
Gabor Kiss-Vamosi
c092fb3303 lv_draw: make anti aliasing function public 2018-06-12 09:22:45 +02:00
Josh McAtee
a30b117c60 Small fix for bar/slider to make the fill more symmetric when near the min/max 2018-06-11 16:53:45 -07:00
Josh McAtee
f6e054ba73 Fix page focus not focusing objects the same way when moving up or down the page 2018-06-11 16:00:30 -07:00
Gabor Kiss-Vamosi
cb79f816a0 lv_preload: make animator function public 2018-06-11 17:06:24 +02:00
Gabor Kiss-Vamosi
bd0d0eead7 lv_list: set LV_PROT_PRESS_LOST for list elements 2018-06-11 15:45:23 +02:00
Gabor Kiss-Vamosi
e4a12b22b4 add lv_prloader 2018-06-11 10:36:36 +02:00
Gabor Kiss-Vamosi
df226053cf add bezier solver function and combine math and trigo files 2018-06-11 10:30:06 +02:00
Gabor Kiss-Vamosi
ebac219ba3 lv_txt_get_width: trim letter space of trailing non-printoble characters 2018-06-09 08:49:27 +02:00
Gabor Kiss-Vamosi
c858a13aa3 add lv_preload.c/h 2018-06-09 08:47:09 +02:00
Gabor Kiss-Vamosi
bfe1760904 new object type: lv_preload 2018-06-09 08:45:38 +02:00
Gabor Kiss-Vamosi
ea323d260e add new object type: lv_arc 2018-06-08 10:26:10 +02:00
Gabor Kiss-Vamosi
f2d380ce96 merge calendar 2018-06-08 09:51:11 +02:00
Gabor Kiss-Vamosi
f9f542e7e3 Merge pull request #159 from BenArtes/btns_pos
Add btns_pos to ext_attr w/ get + set functions and TOP / BOTTOM impl.
2018-06-07 15:44:56 +02:00
Gabor Kiss-Vamosi
e241e4334f merge new draw structure 2018-06-07 15:42:41 +02:00
Gabor Kiss-Vamosi
8826892b00 merge beta 2018-06-07 15:41:22 +02:00
Gabor Kiss-Vamosi
cc1c20d6fe add arc drawing and restructure draw functions 2018-06-07 15:40:08 +02:00
Gabor Kiss-Vamosi
3890e85527 lv_line: test with adding circles to corner points 2018-06-07 15:40:08 +02:00
Gabor Kiss-Vamosi
e4dea6da91 lv_lmeter: set_tyle function rename for consistency 2018-06-07 15:40:08 +02:00
Gabor Kiss-Vamosi
d08c0953fb add new line draw algorithm which supports perpendicular ending 2018-06-07 15:39:25 +02:00
Gabor Kiss-Vamosi
ceae0c539e lv_draw_img: further fix on buffer oveflow 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
25b978126e lv_draw_img: fix buffer oveflow with alpha byte 2018-06-07 15:38:48 +02:00
Michael Simon
5189991b53 Added include for lv_theme_material.h to lv_theme.h 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
ae10bd8332 Update TODO_MINOR.md 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
8d87846907 Update TODO_PATCH.md 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
098267f942 lv_tabview_set_tab_act: enable to set the act tab again: 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
b92705f414 Update TODO_PATCH.md 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
8937ae9073 Update CONTRIBUTING.md 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
fb6b2c7d23 Update TODO_PATCH.md 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
bc9473a439 Update TODO_PATCH.md 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
47412da33a LV_GROUP_KEY_ENTER_LONG: improve objects behaviour 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
7d563b8789 remove the LV_GROUP_KEY_ENTER_LONG from some objects + fix ddlist and roller ENTER 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
4d617a1aab remove debug printf 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
d0d73ca2c0 start lv_refr_task immediately on start up (don't need to wait it's period to refresh the screen) 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
32b0170c3b release v5.1.1 2018-06-07 15:38:48 +02:00
Gabor Kiss-Vamosi
d7904efccf lv_draw_img: further fix on buffer oveflow 2018-06-01 12:41:58 +02:00
Gabor Kiss-Vamosi
8441f8bff7 lv_draw_img: fix buffer oveflow with alpha byte 2018-06-01 12:39:34 +02:00
Gabor Kiss-Vamosi
47cafb52b5 lv_draw_img: fix buffer oveflow with alpha byte 2018-06-01 12:38:37 +02:00
Gabor Kiss-Vamosi
20c8e12e09 further test on draw line 2018-06-01 12:36:27 +02:00
Gabor Kiss-Vamosi
61645fe5a9 Merge pull request #265 from MiSimon/lv_theme_material_include
Added include for lv_theme_material.h to lv_theme.h
2018-05-31 15:27:12 +02:00
Michael Simon
bc917a33b6 Added include for lv_theme_material.h to lv_theme.h 2018-05-30 20:27:18 +02:00
Gabor Kiss-Vamosi
9751a9c8cb line draw: move the main line to keep it's center position 2018-05-26 22:40:09 +02:00
Gabor Kiss-Vamosi
ad22d4b9b5 LV_GROUP_KEY_ENTER_LONG: improve objects behaviour 2018-05-26 10:28:58 +02:00
Gabor Kiss-Vamosi
e5bba0529a remove the LV_GROUP_KEY_ENTER_LONG from some objects + fix ddlist and roller ENTER 2018-05-26 10:03:43 +02:00
Gabor Kiss-Vamosi
c17df70f8e lv_calendar_create: implement copy 2018-05-26 09:52:28 +02:00
Gabor Kiss-Vamosi
5d37d87cf1 lv_calendar: bugfixes 2018-05-26 09:48:46 +02:00
Gabor Kiss-Vamosi
6a610949e9 lv_txt_get_width: trim the last letter space 2018-05-26 09:48:26 +02:00
Gabor Kiss-Vamosi
eba3105cae start a brand new line drawing algorithm 2018-05-25 23:14:19 +02:00
Gabor Kiss-Vamosi
47fb0afe79 Update TODO_MINOR.md 2018-05-22 13:10:34 +02:00
Gabor Kiss-Vamosi
bf6d114893 Update TODO_PATCH.md 2018-05-22 12:49:56 +02:00
Gabor Kiss-Vamosi
f5d4bf8fc4 lv_tabview_set_tab_act: enable to set the act tab again: 2018-05-20 21:49:04 +02:00
Gabor Kiss-Vamosi
1254020b8b Merge branch 'beta' 2018-05-20 21:33:21 +02:00
Gabor Kiss-Vamosi
7f03c17a08 remove debug printf 2018-05-20 21:32:16 +02:00
Gabor Kiss-Vamosi
4440506858 Merge branch 'beta' of https://github.com/littlevgl/lvgl into beta 2018-05-20 21:31:23 +02:00
Gabor Kiss-Vamosi
01b4820b93 release v5.1.1 2018-05-20 21:30:36 +02:00
Gabor Kiss-Vamosi
6bf1a8ffda restructure lv_draw folder and lv_line rework started 2018-05-20 21:27:57 +02:00
Gabor Kiss-Vamosi
fc8ee11955 start lv_refr_task immediately on start up (don't need to wait it's period to refresh the screen) 2018-05-17 17:07:21 +02:00
Gabor Kiss-Vamosi
fe30f9739b Update TODO_PATCH.md 2018-05-17 13:05:54 +02:00
Gabor Kiss-Vamosi
6be0089cac lv_group_del: remove the objects from the groups too 2018-05-16 23:30:04 +02:00
Gabor Kiss-Vamosi
80cb93f8e1 don't invalidate hidden objects 2018-05-16 23:19:22 +02:00
Gabor Kiss-Vamosi
a3ad4b3616 in lv_objx set functions apply the new value only if it's different from the current 2018-05-16 23:09:30 +02:00
Gabor Kiss-Vamosi
5fedbdf414 fix drawing of 1px border with zero radius and AA 2018-05-16 22:35:19 +02:00
Gabor Kiss-Vamosi
125555afcf lv_calendar added 2018-05-16 22:34:39 +02:00
Gabor Kiss-Vamosi
89b5907eb6 lv_slider: draw greater background on negative padding if knob_in == 1 2018-05-08 11:28:26 +02:00
Gabor Kiss-Vamosi
68d262ba93 lv_draw: remove debug printf-s 2018-05-08 11:28:26 +02:00
Gabor Kiss-Vamosi
ee3a44388c lv_draw: shadow draw fix array over indexing 2018-05-08 11:28:26 +02:00
Gabor Kiss-Vamosi
5ae4ebccba implement basic calendar functionalites 2018-05-08 10:33:02 +02:00
Gabor Kiss-Vamosi
51e15ced3f add lv_theme_zen.h to lv_theme.h 2018-04-18 18:11:20 +02:00
Gabor Kiss-Vamosi
aac716d497 lv_task: lv_task_set_prio fix 2018-04-18 13:23:43 +02:00
Gabor Kiss-Vamosi
420fe9710b merge beta 2018-04-17 14:39:27 +02:00
Gabor Kiss-Vamosi
e57954ef2e remove old define 2018-04-17 14:38:17 +02:00
Gabor Kiss-Vamosi
2353ca0621 fix overflow in lv_anim_speed_to_time 2018-04-17 14:11:39 +02:00
Gabor Kiss-Vamosi
8bc5770c28 lv_del_obj: fix if delted while pressed 2018-04-14 22:06:13 +02:00
Gabor Kiss-Vamosi
913517f19d lv_kb: before ok/close action don't deassign the lv_ta if there is user defived action 2018-04-13 20:09:14 +02:00
Gabor Kiss-Vamosi
0d385c237a lv_font: remove const number return values 2018-04-09 12:39:58 +02:00
Gabor Kiss-Vamosi
94bf21b9be lv_fs: fix duplicated error cheching 2018-04-09 12:33:33 +02:00
Gabor Kiss-Vamosi
a4b697f41e in style animation add opacity handling to image, text and line 2018-04-09 12:29:56 +02:00
Gabor Kiss-Vamosi
b047c1318f minor comment fixes 2018-04-05 22:21:50 +02:00
Gabor Kiss-Vamosi
a5d6881e9e Merge pull request #187 from upbeat27/group_missing_def
Add missing function definition for lv_group_del
2018-04-05 17:54:29 +02:00
Josh McAtee
eddbbc58b1 Add missing function definition for lv_group_del 2018-04-04 10:24:53 -07:00
Gabor Kiss-Vamosi
908db3cd59 Update CONTRIBUTING.md 2018-04-04 00:17:37 +02:00
Gabor Kiss-Vamosi
8a42ab14ad Merge branch 'master' into beta 2018-04-03 12:22:11 +02:00
Gabor Kiss-Vamosi
c2f70d1cc7 mono theme: fix typo 2018-04-03 12:21:59 +02:00
Gabor Kiss-Vamosi
89452a9d8e lv_cont_set_fit: fix wrong signal paramter 2018-04-03 12:21:45 +02:00
Gabor Kiss-Vamosi
563411a33a lv_indev: drag test use absolute coosdinates 2018-04-03 12:21:07 +02:00
Gabor Kiss-Vamosi
d1889b77e5 lv_slider: inicator draw bugfix 2018-03-29 13:56:21 +02:00
Gabor Kiss-Vamosi
e8a9d1bdc7 lv_line: set line.width ext. size to not trim parts on x = 0, y = 0 coordinates 2018-03-22 14:45:15 +01:00
Gabor Kiss-Vamosi
9b2de5f215 Update TODO_PATCH.md 2018-03-22 14:42:56 +01:00
Gabor Kiss-Vamosi
779cac9b77 Update TODO_PATCH.md 2018-03-22 14:42:41 +01:00
Gabor Kiss-Vamosi
a4d77bec6b Disable Visual Studio warnings 2018-03-22 14:41:55 +01:00
Gabor Kiss-Vamosi
dd6bad1b6e fix of 16 bit image draw with alpha byte 2018-03-22 12:39:58 +01:00
Gabor Kiss-Vamosi
0d93816827 lv_group_create: init focus_cb 2018-03-22 10:37:00 +01:00
Gabor Kiss-Vamosi
ca95d76659 lv_conf.h: add LV_COMPILER_VLA_SUPPORTED 2018-03-22 10:09:00 +01:00
Gabor Kiss-Vamosi
d58a83cda7 lv_mbox: Translate LV_GROUP_KEY_UP/DOWN to LV_GROUP_KEY_LEFT/RIGHT 2018-03-21 13:15:02 +01:00
Gabor Kiss-Vamosi
5256656efa Merge pull request #169 from BenArtes/obj_scrl_clean_fix
Obj scrl clean fix
2018-03-19 10:24:35 +01:00
Benjamin Artes
bb1e00a263 Merge branch 'master' into obj_scrl_clean_fix 2018-03-16 11:59:32 -04:00
Benjamin Artes
b2f0ed0cb9 Merge branch 'master' into btns_pos 2018-03-16 11:58:56 -04:00
Benjamin Artes
75a43a536c Adds sub-object specific clean functions to prevent breaking with lv_obj_clean 2018-03-16 11:53:27 -04:00
Gabor Kiss-Vamosi
0263c2cf68 start v5.2.0 2018-03-12 17:20:55 +01:00
Gabor Kiss-Vamosi
69c5373db0 start v5.1.1 2018-03-12 17:20:24 +01:00
Gabor Kiss-Vamosi
a55d02dd31 Merge pull request #158 from Zaltora/patch-1
Non constant declaration
2018-03-12 13:17:11 +01:00
Zaltora
02d318e66d Non constant declaration
I got an error when compilation. I fix the compilation problem but a proper way to initialize this variable is maybe needed. maybe in lv_init ?
You can fix it and close this pull request.
2018-03-12 11:40:24 +01:00
Gabor Kiss-Vamosi
9f72ca2329 Update TODO_MAJOR.md 2018-03-12 10:44:02 +01:00
Gabor Kiss-Vamosi
2d12ad9251 Update TODO_PATCH.md 2018-03-12 10:43:42 +01:00
Gabor Kiss-Vamosi
09c072bda6 Update TODO_MINOR.md 2018-03-12 10:43:12 +01:00
Gabor Kiss-Vamosi
9909a4123f Update TODO_PATCH.md 2018-03-12 10:42:03 +01:00
Gabor Kiss-Vamosi
63c59b6570 Update CONTRIBUTING.md 2018-03-10 09:26:35 +01:00
Gabor Kiss-Vamosi
ee4cd4756b Update README.md 2018-03-10 07:47:28 +01:00
Gabor Kiss-Vamosi
bd0c6c9ce3 regenerate buil in fonts 2018-03-09 14:14:06 +01:00
Gabor Kiss-Vamosi
213e621412 fix text opacity 2018-03-09 14:13:51 +01:00
Benjamin Artes
2d9056aa78 Add btns_pos to ext_attr w/ get + set functions and TOP / BOTTOM impl.
Leaving LEFT / RIGHT for someone else or when I have more time.
2018-03-07 15:45:11 -05:00
Gabor Kiss-Vamosi
5d53a9edaf fix warnings 2018-03-07 14:46:38 +01:00
Gabor Kiss-Vamosi
c2fb0fffbd Update README.md 2018-03-07 13:51:59 +01:00
Gabor Kiss-Vamosi
fc05fad277 release v5.1 2018-03-07 13:39:51 +01:00
Gabor Kiss-Vamosi
1466d2b97e Merge branch 'master' of https://github.com/littlevgl/lvgl 2018-03-07 13:36:50 +01:00
Gabor Kiss-Vamosi
13351c0091 lv_math: lv_math_num_to_str: return with buf 2018-03-07 13:10:20 +01:00
Gabor Kiss-Vamosi
19f98ce8ea merge dev-5.1 2018-03-07 13:08:53 +01:00
Gabor Kiss-Vamosi
4b5fefa521 Merge branch 'beta' of https://github.com/littlevgl/lvgl into beta 2018-03-07 13:07:17 +01:00
Gabor Kiss-Vamosi
f8b4dc3a2d merge beta 2018-03-07 13:07:00 +01:00
Gabor Kiss-Vamosi
4d571290c7 Update TODO_PATCH.md 2018-03-07 12:48:31 +01:00
Gabor Kiss-Vamosi
3a35da8f27 lv_btnm (and lv_kb): add up/down navigation with LV_GROUP_KEY_UP/DOWN 2018-03-07 11:37:38 +01:00
Gabor Kiss-Vamosi
1b1efbd0f0 lv_area_is_on bugfix 2018-03-07 10:49:25 +01:00
Gabor Kiss-Vamosi
d068c85e80 minor updates on LV_ATTRIBUTE_... 2018-03-07 09:22:37 +01:00
Gabor Kiss-Vamosi
145ea416be ddlist: auto-open on LV_GROUP_KEY_LEF/RIGHT/UP/DOWN 2018-03-07 09:22:10 +01:00
Gabor Kiss-Vamosi
0b6be3a0f6 bottom shadow: add blur 2018-03-05 17:14:45 +01:00
Gabor Kiss-Vamosi
7cf2cf0756 Update TODO_MINOR.md 2018-03-05 14:16:53 +01:00
Gabor Kiss-Vamosi
69eb3a9756 updae comments 2018-03-04 17:57:51 +01:00
Gabor Kiss-Vamosi
7b20da2276 remove debug printf 2018-03-04 17:56:32 +01:00
Gabor Kiss-Vamosi
eb376899ce remove sprintf from lv_gauge the save ROM (custom BCD converter added to lv_math.c) 2018-03-04 17:51:41 +01:00
Gabor Kiss-Vamosi
2123ee0218 fixes with USE_LV_FILESYSTEM = 0 2018-03-04 17:03:37 +01:00
Gabor Kiss-Vamosi
6e94c70fbb replace the only sscanf with a custom function (save 30 kB ROM) 2018-03-04 16:34:14 +01:00
Gabor Kiss-Vamosi
80b181293a fix lv_rfill screen sized area size 2018-03-04 15:36:45 +01:00
Gabor Kiss-Vamosi
fb59508ad1 typo fix: lv_refr_set_round_cb() 2018-03-02 15:34:22 +01:00
Gabor Kiss-Vamosi
9e20b3a18e Merge pull request #136 from chenshijianworkgit/beta
fix keyboard cursor management invalid
2018-03-02 10:59:43 +01:00
jian
505c44a4d3 fix keyboard cursor management invalid 2018-03-02 09:44:05 +08:00
Gabor Kiss-Vamosi
c0d55112b4 Merge remote-tracking branch 'origin/beta' into dev-5.1 2018-03-01 13:18:50 +01:00
Gabor Kiss-Vamosi
e246db4604 minor updates 2018-03-01 13:17:29 +01:00
Gabor Kiss-Vamosi
2d5e41d566 lv_conf_templ: minor updates 2018-03-01 12:52:35 +01:00
Gabor Kiss-Vamosi
c3e248ec79 ddlist and roller group updates + updates with USE_LV_ANIMATION = 0 2018-03-01 12:21:49 +01:00
Gabor Kiss-Vamosi
7da60e219d Merge pull request #134 from chenshijianworkgit/beta
gauge's label count is not inherited
2018-03-01 10:12:05 +01:00
jian
8978f27145 fix the number of gauge's label count is not inherited 2018-03-01 11:37:54 +08:00
Gabor Kiss-Vamosi
a6749c0a26 Update TODO_MINOR.md 2018-02-28 16:31:40 +01:00
Gabor Kiss-Vamosi
d20fe1f4ee add special default style_mod function in lv_group for LV_COLOR_DEPTH = 1 2018-02-28 16:17:56 +01:00
Gabor Kiss-Vamosi
05fe9b6b81 add lv_obj_get_type 2018-02-28 15:37:41 +01:00
Gabor Kiss-Vamosi
e4b677be3d lv_hal_disp: fix linked list issue whan adding more displays 2018-02-28 09:45:51 +01:00
Gabor Kiss-Vamosi
05a98a0107 Update TODO_MINOR.md 2018-02-28 09:42:44 +01:00
Gabor Kiss-Vamosi
769f864360 makefle update 2018-02-27 13:24:49 +01:00
Gabor Kiss-Vamosi
af3012abff border draw bugfix with radius = 0 2018-02-27 13:24:41 +01:00
Gabor Kiss-Vamosi
cdebffe462 remove debug printf-s 2018-02-27 11:47:21 +01:00
Gabor Kiss-Vamosi
5b9c9c4833 fix: USE_LV_SHADOW = 0 with LV_ANTIALAIS = 1 2018-02-27 11:45:38 +01:00
Gabor Kiss-Vamosi
9605a6b712 image draw: minor optimization 2018-02-27 11:43:14 +01:00
Gabor Kiss-Vamosi
6f304736c5 image draw bugfix with NO_GPU 2018-02-26 17:19:51 +01:00
Gabor Kiss-Vamosi
dbe7ef7a0c lv_color.h fix uninitialized alpha chanel with 24 bit color 2018-02-26 15:57:40 +01:00
Gabor Kiss-Vamosi
f0a705595b minor shadow bottom draw bugfix 2018-02-24 15:36:19 +01:00
Gabor Kiss-Vamosi
076540752b prevent refresh after drag is no movement happened 2018-02-24 15:36:06 +01:00
Gabor Kiss-Vamosi
5bc8f819f0 Update TODO_MINOR.md 2018-02-24 14:50:58 +01:00
Gabor Kiss-Vamosi
f3e1df3997 add LV_GROUP_KEY_ENETER_LONG to trigger long press evets of the objects 2018-02-24 14:39:15 +01:00
Gabor Kiss-Vamosi
465ce80e41 Update TODO_MINOR.md 2018-02-24 13:37:53 +01:00
Gabor Kiss-Vamosi
b2f72d3f70 LV_INDEV_TYPE_BUTTON added 2018-02-24 13:17:39 +01:00
Gabor Kiss-Vamosi
a676590e30 add group focus callback and invalid area rounding callback option 2018-02-24 11:55:39 +01:00
Gabor Kiss-Vamosi
7688535204 Update TODO_MINOR.md 2018-02-24 11:54:45 +01:00
Gabor Kiss-Vamosi
7310a2c6cc add LV_PROTECT_PRESS_LOST 2018-02-24 11:26:06 +01:00
Gabor Kiss-Vamosi
3bbc052794 Update TODO_MINOR.md 2018-02-24 11:25:06 +01:00
Gabor Kiss-Vamosi
d57749ec98 Update TODO_MINOR.md 2018-02-23 20:55:21 +01:00
Gabor Kiss-Vamosi
5b637c68ee Update TODO_MINOR.md 2018-02-23 18:09:05 +01:00
Gabor Kiss-Vamosi
3e8ca224a8 Update TODO_MAJOR.md 2018-02-23 17:10:58 +01:00
Gabor Kiss-Vamosi
6e6a7de1a8 lv_conf_templ.h update 2018-02-23 17:07:02 +01:00
Gabor Kiss-Vamosi
ff2e425b48 comment updates 2018-02-23 17:03:00 +01:00
Gabor Kiss-Vamosi
f7ee864709 Update TODO_MINOR.md 2018-02-23 16:31:15 +01:00
Gabor Kiss-Vamosi
93330eaf1d rename LV_IMG_FORMAT_RAW_INTERNAL to LV_IMG_FORMAT_INTERNAL_RAW 2018-02-23 15:22:23 +01:00
Gabor Kiss-Vamosi
c4503cb8f8 lv_draw_label bugfix (old rounding from LV_FONT_ANTIALIAS) 2018-02-23 15:19:39 +01:00
Gabor Kiss-Vamosi
a11957d0b4 new font and anti-alising system release for test 2018-02-23 13:56:32 +01:00
Gabor Kiss-Vamosi
2177e51857 lv_slider: fix knob_in with not zero min value 2018-02-23 13:56:32 +01:00
Gabor Kiss-Vamosi
ff3bbc56bc Update lv_txt.c
fix lv_txt_ut8_size() with 4 byte characters.
2018-02-23 13:56:32 +01:00
Gabor Kiss-Vamosi
3e5d43fd8b Merge pull request #116 from CapnBry/dev-5.1
Add user pointer to indev driver for state storage between read() calls
2018-02-20 14:29:33 +01:00
Bryan Mayland
fada3aabfa Add user pointer to indev driver for state storage between read() calls 2018-02-20 13:25:36 +00:00
Gabor Kiss-Vamosi
7a09086c6b Update TODO_MAJOR.md 2018-02-20 08:48:52 +01:00
Gabor Kiss-Vamosi
890829aa93 Update TODO_MINOR.md 2018-02-17 20:15:02 +01:00
Gabor Kiss-Vamosi
88096cbbfe merge change 2018-02-16 13:16:40 +01:00
Gabor Kiss-Vamosi
c56f5421f0 shadow drawing optimized 2018-02-16 12:55:05 +01:00
Gabor Kiss-Vamosi
fa6eb2fc22 lv_anim: delete unused global variable 2018-02-15 13:37:23 +01:00
Gabor Kiss-Vamosi
c547d2cf67 Merge branch 'master' into beta 2018-02-15 13:25:37 +01:00
Gabor Kiss-Vamosi
2f5f63ed13 lv_task: faster and clearer handler 2018-02-15 13:24:56 +01:00
Gabor Kiss-Vamosi
2237ebd46e work in progress with new anti aliasing 2018-02-15 10:12:28 +01:00
Gabor Kiss-Vamosi
f4679bffc3 lv_draw_label: letter position bugfix with no anti aliasing 2018-02-09 12:41:48 +01:00
Gabor Kiss-Vamosi
133bfe161c add new fonts 2018-02-09 12:40:00 +01:00
Gabor Kiss-Vamosi
39961a686f Update TODO_MINOR.md 2018-02-07 13:32:34 +01:00
Gabor Kiss-Vamosi
dfedda8e28 Update TODO_PATCH.md 2018-02-07 13:08:28 +01:00
Gabor Kiss-Vamosi
7e17d38754 Merge pull request #105 from upbeat27/indev-proc-fix
Fix input device processing
2018-02-07 13:07:39 +01:00
Gabor Kiss-Vamosi
9f7e091aba Update TODO_MINOR.md 2018-02-07 13:00:26 +01:00
Josh McAtee
55a276ff9a Fix input device processing 2018-02-06 11:42:50 -08:00
Gabor Kiss-Vamosi
5f5c5f3d42 Update TODO_MAJOR.md 2018-02-05 21:46:01 +01:00
Gabor Kiss-Vamosi
83aab8f825 Update TODO_MAJOR.md 2018-02-05 21:45:45 +01:00
Gabor Kiss-Vamosi
d5bc4c0522 Update TODO_MINOR.md 2018-02-05 21:43:28 +01:00
Gabor Kiss-Vamosi
e5133e27e6 Update TODO_PATCH.md 2018-02-05 21:33:32 +01:00
Gabor Kiss-Vamosi
bbbf822561 lv_slider: fix knob_in with not zero min value 2018-02-05 11:35:07 +01:00
Gabor Kiss-Vamosi
b0e26d865c new font system WIP 2018-02-05 11:27:08 +01:00
Gabor Kiss-Vamosi
0bf1d14756 Update lv_txt.c
fix lv_txt_ut8_size() with 4 byte characters.
2018-02-03 06:25:42 +01:00
Gabor Kiss-Vamosi
e5676aaf9b lv_label_set_anim_time: fix (was no effect in LONG_ROLL) 2018-01-31 10:07:20 +01:00
Gabor Kiss-Vamosi
acc4d77fe9 lv_label_set_anim_time: fix (was no effect in LONG_ROLL) 2018-01-31 10:06:39 +01:00
Gabor Kiss-Vamosi
241c2e5d38 Merge pull request #95 from upbeat27/beta
Fix dropdown bug
2018-01-31 10:00:10 +01:00
Josh McAtee
cab6ce93d6 Fix ddlist controlled via keyboard
The selected option is tracked correctly when scrolling through the
dropdown list via keyboard
2018-01-30 11:58:40 -08:00
upbeat27
aad9f76a39 Merge pull request #1 from littlevgl/beta
Beta
2018-01-30 11:09:23 -08:00
Gabor Kiss-Vamosi
ec19ceb22f typo fixes 2018-01-30 14:48:35 +01:00
Gabor Kiss-Vamosi
1689a121e5 label draw bugfix: upscale offset with anti-aliasing 2018-01-30 14:48:35 +01:00
Gabor Kiss-Vamosi
120a694324 Update README.md 2018-01-29 12:32:14 +01:00
Gabor Kiss-Vamosi
90c67d8f64 Update TODO_PATCH.md 2018-01-26 10:03:57 +01:00
Gabor Kiss-Vamosi
a2db424eb1 Merge pull request #86 from upbeat27/tabview-spelling-fix
Tabview spelling fix
2018-01-26 10:03:44 +01:00
Gabor Kiss-Vamosi
bff582d5ed Merge pull request #85 from upbeat27/patch-1
Chart draw bug
2018-01-26 10:00:59 +01:00
Josh McAtee
8bc9868705 Fix spelling of "handler"
Correct instances of hadler -> handler
2018-01-25 13:14:10 -08:00
Josh McAtee
7b46bfa0d1 Merge remote-tracking branch 'upstream/beta' 2018-01-25 13:10:17 -08:00
upbeat27
2770752813 Fix incorrect storage size for loop counter
When drawing chart lines/points/columns, execution will stay in loop forever when point count > 255.
The loop counter i was set to uint8_t when it should be the same size as point_cnt, uint16_t.
2018-01-25 11:34:47 -08:00
Gabor Kiss-Vamosi
2d83b6edb2 Update TODO_MAJOR.md 2018-01-23 19:49:13 +01:00
Gabor Kiss-Vamosi
39e76b0e4f Update TODO_MAJOR.md 2018-01-23 19:46:23 +01:00
Gabor Kiss-Vamosi
e9805c98d5 Update TODO_MAJOR.md 2018-01-23 11:22:51 +01:00
Kiss-Vamosi Gabor
177af6cae7 start v5.0.3 beta 2018-01-21 12:45:35 +01:00
Kiss-Vamosi Gabor
cb1bbeaf3a fix utf-8 encoding with 4 byte long codes 2018-01-21 12:43:47 +01:00
Gabor Kiss-Vamosi
46a1a8dfde Update TODO_MINOR.md 2018-01-19 15:59:48 +01:00
Gabor Kiss-Vamosi
4b4ac7c706 Update TODO_PATCH.md 2018-01-19 15:57:28 +01:00
Gabor Kiss-Vamosi
ad0ad2c4e1 lv_color: set 0xFF as default alpha for 24 bit colors 2018-01-19 15:56:29 +01:00
Gabor Kiss-Vamosi
df2204d50f Merge branch 'beta' 2018-01-19 15:45:58 +01:00
Gabor Kiss-Vamosi
fa883a0220 Merge branch 'master' of https://github.com/littlevgl/lvgl 2018-01-19 15:41:37 +01:00
Gabor Kiss-Vamosi
436833f138 Release: v5.0.2 2018-01-19 15:41:05 +01:00
Gabor Kiss-Vamosi
4ecee47caa add dependecy check to some object types 2018-01-19 15:40:22 +01:00
Gabor Kiss-Vamosi
5db75661cf lv_conf_templ.h: use LV_FONT_ANTIALIAS by default instead of LV_ANTIALAIS 2018-01-19 15:21:51 +01:00
Gabor Kiss-Vamosi
64b5010b15 change 0b.. number to 0x... and add big endian support to LV_COLOR_MAKE 2018-01-19 15:19:13 +01:00
Gabor Kiss-Vamosi
0733018ba5 Update TODO_MINOR.md 2018-01-19 14:10:59 +01:00
Gabor Kiss-Vamosi
6f43efde23 Merge branch 'beta' of https://github.com/littlevgl/lvgl into beta 2018-01-19 13:28:28 +01:00
Gabor Kiss-Vamosi
fb75153d29 lv_list: group focus fixes 2018-01-19 13:28:14 +01:00
Gabor Kiss-Vamosi
339227877a Update TODO_PATCH.md 2018-01-18 11:54:11 +01:00
Gabor Kiss-Vamosi
7710b1df43 Update TODO_MINOR.md 2018-01-18 11:54:05 +01:00
Gabor Kiss-Vamosi
c0a8460575 Update TODO_PATCH.md 2018-01-18 11:44:00 +01:00
Gabor Kiss-Vamosi
7027c7486b Merge pull request #75 from Zaltora/warn_err_compiler
fix warning/error with lv_conf.h option
2018-01-18 11:18:14 +01:00
Gabor Kiss-Vamosi
a42b56c7c7 lv_roller: add missing action handling 2018-01-16 15:35:35 +01:00
Gabor Kiss-Vamosi
c331659026 fix compile issue with undefined LV_ATTRIBUTE_TICK_INC/TASK_HANDLER 2018-01-16 15:26:02 +01:00
Zaltora
01088f77ab dependencies fix 2018-01-16 13:16:48 +01:00
Zaltora
7d302574cc fix warning/error for Graphics feature usage 2018-01-16 11:54:35 +01:00
Zaltora
ee4a419019 fix warning with VDB and shadow selection 2018-01-16 10:44:24 +01:00
Gabor Kiss-Vamosi
1173b33715 Merge pull request #72 from Zaltora/tick_optimization
Specific compiler attribute for tick
2018-01-15 11:17:11 +01:00
Zaltora
0fe5a3ba5e fix typo 2018-01-15 11:13:16 +01:00
Zaltora
6c06bfbf41 miss include fix 2018-01-15 11:07:33 +01:00
Zaltora
6bab1d2840 add handle fn to attribute + reorganize 2018-01-15 11:03:50 +01:00
Zaltora
89044a8649 Add specific otion for tick function + inline it 2018-01-14 10:23:16 +01:00
Gabor Kiss-Vamosi
94e686ba44 lv_obj_get_style: with NULL style check if the parent is focused and use the focused style 2018-01-13 08:18:24 +01:00
Gabor Kiss-Vamosi
86110cf1de lv_roller: lv_roller_get_selected_str: bugfix 2018-01-10 09:43:19 +01:00
Gabor Kiss-Vamosi
9b664e2944 LV_INDEV_READ_PERIOD 0 build bugfix 2018-01-10 09:42:52 +01:00
Gabor Kiss-Vamosi
78ff568dfb Merge pull request #66 from iromero91/master
Add configuration options for whole row and column invalid areas
2018-01-09 20:32:14 +01:00
Jose I Romero
e1d2709431 Add configuration options for whole row and column invalid areas
Some displays like the Sharp memory LCDs require whole rows to be updated at
a time, LV_INV_FULL_ROW ensures that every screen flush is a whole number of
rows.

LV_INV_FULL_COL is provided too for convenience when rotating the screen 90
degrees, making all updates be whole columns instead. Enabling both flags will
make lvgl update the whole screen every time.
2018-01-09 12:38:52 -06:00
Gabor Kiss-Vamosi
47556f2290 lv_ufs_remove: check file existance 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
531eb4b417 line width bugfox width anti-aliasing 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
7f8b1e920a Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
2f084d204e Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
a93fedf945 Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
8fd88300ce Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
d3f0331e8e Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
9fb0da69cc Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
4675bf9ae8 Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
da631cd441 Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
fd40f53d2e Update README.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
9f420af5e2 Update TODO_MINOR.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
9ff4b0e5b2 Update TODO_MAJOR.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
901cb1fab0 Update TODO_MAJOR.md 2018-01-08 09:48:27 +01:00
Gabor Kiss-Vamosi
809c93a19e update version 2018-01-05 13:52:43 +01:00
Gabor Kiss-Vamosi
62c307d6f2 lv_fs: lv_dir_open: bugifx (use rddir_size instead of file_fize) 2018-01-05 13:49:15 +01:00
Gabor Kiss-Vamosi
31488478c1 Merge pull request #60 from BenQoo/beta
lv_group: fix memory leak.
2018-01-04 09:13:03 +01:00
BenQoo
59fa14f989 lv_group: fix memory leak.
The items lack of memory deallocation
* `lv_group->obj_ll`
* `lv_group`
2018-01-04 14:54:37 +08:00
Gabor Kiss-Vamosi
1c34777024 line width bugfox width anti-aliasing 2018-01-02 12:59:18 +01:00
Gabor Kiss-Vamosi
dc3bc9f30d Merge branch 'beta' 2018-01-02 12:43:21 +01:00
Gabor Kiss-Vamosi
96692bfc3b material_theme: darker bg 2018-01-02 12:43:11 +01:00
Gabor Kiss-Vamosi
4aa3927b55 btnm: bottom border fix 2018-01-02 12:43:11 +01:00
Gabor Kiss-Vamosi
6eea879a14 Release v5.0.1 2018-01-02 12:40:53 +01:00
Gabor Kiss-Vamosi
c7862fd701 lv_conf_templ.h update 2018-01-02 12:40:09 +01:00
Gabor Kiss-Vamosi
e1f4426f76 Update README.md 2017-12-31 23:31:10 +01:00
Gabor Kiss-Vamosi
cc37769c91 Update README.md 2017-12-31 23:28:28 +01:00
Gabor Kiss-Vamosi
337d533dd5 Update README.md 2017-12-31 23:17:28 +01:00
Gabor Kiss-Vamosi
bc4a62da96 lv_list: group behaviour fixes 2017-12-31 11:11:46 +01:00
Gabor Kiss-Vamosi
4a58c778e4 Update README.md 2017-12-24 11:04:09 +01:00
Gabor Kiss-Vamosi
866e9e73b1 Update README.md 2017-12-24 11:03:16 +01:00
Gabor Kiss-Vamosi
3582f6501a Update README.md 2017-12-24 11:00:46 +01:00
Gabor Kiss-Vamosi
dfa0970585 lv_mem: bugfix 2017-12-23 09:17:42 +01:00
Gabor Kiss-Vamosi
33f2d2fbd8 Update README.md 2017-12-22 17:09:44 +01:00
Gabor Kiss-Vamosi
85bb30a19d Update README.md 2017-12-22 17:08:17 +01:00
Gabor Kiss-Vamosi
90ee83fb3e Update README.md 2017-12-22 17:08:03 +01:00
Gabor Kiss-Vamosi
bb30cac9df lv_conf_templ update 2017-12-22 15:47:12 +01:00
Gabor Kiss-Vamosi
d8ecb4afec material_theme: darker bg 2017-12-22 15:37:24 +01:00
Gabor Kiss-Vamosi
9d097c7cc1 btnm: bottom border fix 2017-12-22 15:37:06 +01:00
Gabor Kiss-Vamosi
e7356bfbb6 Update TODO_MINOR.md 2017-12-21 03:14:42 +01:00
Gabor Kiss-Vamosi
b0d84a4a3d Update TODO_MAJOR.md 2017-12-21 03:14:02 +01:00
Gabor Kiss-Vamosi
ee795362ba Update TODO_MAJOR.md 2017-12-21 03:13:23 +01:00
Gabor Kiss-Vamosi
e5e76f163c Update README.md 2017-12-21 01:06:11 +01:00
Gabor Kiss-Vamosi
d47db72584 move README to the root 2017-12-21 00:37:29 +01:00
Gabor Kiss-Vamosi
cde8738f0e release v5.0.0 2017-12-21 00:30:00 +01:00
Gabor Kiss-Vamosi
925a174ae2 update templates and themes 2017-12-21 00:19:59 +01:00
Gabor Kiss-Vamosi
5654c97c6b minor bugfixes 2017-12-20 21:27:39 +01:00
Gabor Kiss-Vamosi
d9590baf4c ddlist: define name fix 2017-12-20 17:04:08 +01:00
Gabor Kiss-Vamosi
dda1a38143 chart:init_points and set_points added 2017-12-20 16:51:34 +01:00
Gabor Kiss-Vamosi
d239b319ef lv_task: add idle measurement 2017-12-20 00:47:50 +01:00
Gabor Kiss-Vamosi
8164e8eac3 Update README.md 2017-12-19 22:09:06 +01:00
Gabor Kiss-Vamosi
60cbe5ec4c add zen theme 2017-12-19 22:00:43 +01:00
Gabor Kiss-Vamosi
b9b735ce9f minor updates 2017-12-19 22:00:32 +01:00
Gabor Kiss-Vamosi
65032619e2 add material theme 2017-12-17 20:11:28 +01:00
Gabor Kiss-Vamosi
da581072b4 minor fixes 2017-12-17 20:11:14 +01:00
Gabor Kiss-Vamosi
f242eba9c1 anim path reworked + minor changes 2017-12-17 01:54:09 +01:00
Gabor Kiss-Vamosi
7dad802981 minor fixes 2017-12-13 15:12:04 +01:00
Gabor Kiss-Vamosi
3f54e37143 minor renames 2017-12-11 23:11:15 +01:00
Gabor Kiss-Vamosi
ad3c0ebbfe minor updates 2017-12-11 15:42:23 +01:00
Gabor Kiss-Vamosi
4fce2f394d LV_INDEV_POINT_MARKER bugfix 2017-12-11 15:22:58 +01:00
Gabor Kiss-Vamosi
ce61609900 release rc-1 2017-12-11 14:40:46 +01:00
Gabor Kiss-Vamosi
ae23300c07 indev: add inactivity timer 2017-12-11 12:53:58 +01:00
Gabor Kiss-Vamosi
e7055bedf8 slider: lv_slider_is_dragged added 2017-12-11 11:42:27 +01:00
Gabor Kiss-Vamosi
dffc613d46 indev: add get_inactive_time 2017-12-11 10:59:33 +01:00
Gabor Kiss-Vamosi
7fb2974259 regenerate the fonts 2017-12-08 15:56:01 +01:00
Gabor Kiss-Vamosi
4138785a4e lv_tanview: minor renames 2017-12-08 14:34:07 +01:00
Gabor Kiss-Vamosi
91b788dc57 minor fixes 2017-12-08 08:59:37 +01:00
Gabor Kiss-Vamosi
0bfb73b632 lv_conf_templ update 2017-12-07 19:27:13 +01:00
Gabor Kiss-Vamosi
893475ad89 Hide anti aliasing. No x << LV_AA rewuired from now 2017-12-07 19:22:23 +01:00
Gabor Kiss-Vamosi
8bd9ab7b84 LV_GROUP rename 2017-12-07 10:38:25 +01:00
Gabor Kiss-Vamosi
266487fdab makefiles updated 2017-12-06 11:50:38 +01:00
Gabor Kiss-Vamosi
76902e00eb fonts regenerated 2017-12-06 11:50:27 +01:00
Gabor Kiss-Vamosi
2cf7ed0d26 lv_draw: use Variable Length Arrays 2017-12-06 09:48:52 +01:00
Gabor Kiss-Vamosi
1060e3c25a solve warnings 2017-12-03 22:41:32 +01:00
Gabor Kiss-Vamosi
562486c14e FS_RES_... rename to LV_FS_RES_... 2017-12-03 22:32:09 +01:00
Gabor Kiss-Vamosi
acd0a98641 lv_conf_templ: update 2017-12-03 00:38:30 +01:00
Gabor Kiss-Vamosi
92e75fe05d lv_theme_mono: add monochrome theme 2017-12-03 00:38:30 +01:00
Gabor Kiss-Vamosi
43646b78ef lv_mem_realloc: just truncate mem if smaller then then the old 2017-12-03 00:38:30 +01:00
Gabor Kiss-Vamosi
03d076197f minor fixes for objects 2017-12-03 00:38:30 +01:00
Gabor Kiss-Vamosi
596b15799d lv_page: draw border after the content 2017-12-03 00:38:30 +01:00
Gabor Kiss-Vamosi
d6e1705a1a fix a lot of warnings 2017-12-02 20:43:50 +01:00
Gabor Kiss-Vamosi
525c8d3dd9 minor renames 2017-12-02 15:04:44 +01:00
Gabor Kiss-Vamosi
defa3a0922 Merge branch 'dev-5.0' of https://github.com/littlevgl/lvgl into dev-5.0 2017-12-02 14:53:39 +01:00
Gabor Kiss-Vamosi
15c2187c57 night theme bugfix 2017-12-02 14:53:27 +01:00
Gabor Kiss-Vamosi
cabf623e11 color_int_t reanme to lv_color_int_t 2017-12-01 19:40:12 +01:00
Gabor Kiss-Vamosi
47f2e0a8f7 solve warnings 2017-11-30 14:46:16 +01:00
Gabor Kiss-Vamosi
b5af497aad makefile update 2017-11-30 11:44:24 +01:00
Gabor Kiss-Vamosi
514d2b38b4 lv_obj folder rename to lv_core 2017-11-30 11:35:49 +01:00
Gabor Kiss-Vamosi
2f5a09bc99 LV_VDB_ADR added to place vdb to sepcific address 2017-11-30 09:53:26 +01:00
Gabor Kiss-Vamosi
11c2d5dce4 lv_indev_registr rename to lv_indev_drv_regster 2017-11-29 16:28:20 +01:00
Gabor Kiss-Vamosi
bfc735a004 lv_conf_templ: add LV_VDB_DOUBLE 2017-11-29 15:41:57 +01:00
Gabor Kiss-Vamosi
b26bb2e5b7 lv_tick_inc: update with 'tick_period' parameter 2017-11-29 15:34:37 +01:00
Gabor Kiss-Vamosi
366ac0c03c Update README.md 2017-11-29 15:33:29 +01:00
Gabor Kiss-Vamosi
617438d770 lv_draw_vbasic: minor updates 2017-11-29 15:21:47 +01:00
Gabor Kiss-Vamosi
dfb0789191 makefile revert 2017-11-29 13:40:43 +01:00
Gabor Kiss-Vamosi
8db441d6a8 solve warnings 2017-11-29 13:22:44 +01:00
Gabor Kiss-Vamosi
1a1840ae11 lv_hal_indev and tick updates 2017-11-29 13:22:44 +01:00
Gabor Kiss-Vamosi
cc7128ce4c lv_hal_disp: add disp_flush 2017-11-29 13:22:44 +01:00
Gabor Kiss-Vamosi
9d87a82210 Update README.md 2017-11-29 11:43:09 +01:00
Gabor Kiss-Vamosi
d6692e3ead Update README.md 2017-11-29 11:42:23 +01:00
Gabor Kiss-Vamosi
80b408f9a6 Update README.md 2017-11-29 11:41:34 +01:00
Gabor Kiss-Vamosi
7f486ac48f Update README.md 2017-11-29 11:37:26 +01:00
Gabor Kiss-Vamosi
1ea356688f Update README.md 2017-11-29 11:32:38 +01:00
Gabor Kiss-Vamosi
193ca45248 Update README.md 2017-11-29 11:24:39 +01:00
Gabor Kiss-Vamosi
6678e48ccc Update README.md 2017-11-29 11:10:12 +01:00
Gabor Kiss-Vamosi
1eab2ccba3 add makefile 2017-11-28 16:15:42 +01:00
Gabor Kiss-Vamosi
2d09b3dbdf lv_area: add 'lv_' prefix 2017-11-28 16:15:13 +01:00
Gabor Kiss-Vamosi
83b01aa627 add LV_NO_ANIM and LV_NO_SHADOW 2017-11-27 17:48:54 +01:00
Gabor Kiss-Vamosi
0a3ff11223 lv_hal: add init funtion to call prior driver registration 2017-11-27 09:38:10 +01:00
Gabor Kiss-Vamosi
c9b28c7692 lv_hal: use less general structur elements 2017-11-27 00:48:16 +01:00
Gabor Kiss-Vamosi
c890dc8d43 use only relative include paths 2017-11-26 23:58:05 +01:00
Gabor Kiss-Vamosi
84477fccee lv draw corner: color mix bugfix and speed up 2017-11-26 22:09:37 +01:00
Gabor Kiss-Vamosi
1d103f11c3 lv_theme_night: list remove inner padding 2017-11-26 19:16:32 +01:00
Gabor Kiss-Vamosi
c157f0cdad tabview: add slide disable/enable 2017-11-26 18:58:11 +01:00
Gabor Kiss-Vamosi
8e1f54a213 misc integration bugfixes 2017-11-26 14:39:22 +01:00
Gabor Kiss-Vamosi
17a691ad39 lv_conf_templ update 2017-11-26 13:13:45 +01:00
Gabor Kiss-Vamosi
2ff3c37a54 macro remames 2017-11-26 13:09:43 +01:00
Gabor Kiss-Vamosi
c48a521882 misc is completly removed 2017-11-26 11:38:28 +01:00
Gabor Kiss-Vamosi
a8ceb6bcaf lv_misc: all functions are renamed 2017-11-24 17:48:47 +01:00
Gabor Kiss-Vamosi
1fcda8092e rename a lot of functions in lv_misc 2017-11-23 21:28:36 +01:00
Gabor Kiss-Vamosi
c3471fd04e lv_misc files added from misc repo 2017-11-23 20:42:14 +01:00
Gabor Kiss-Vamosi
c5b9a4eb17 lv_theme_night ready 2017-11-22 23:04:02 +01:00
Gabor Kiss-Vamosi
b90f3c7d32 theme_night: minor update on buttons 2017-11-22 21:11:50 +01:00
Gabor Kiss-Vamosi
38663e1365 Merge branch 'beta' of https://github.com/littlevgl/lvgl into beta 2017-11-22 18:53:45 +01:00
Gabor Kiss-Vamosi
d8d49d1835 theme updates 2017-11-22 16:03:40 +01:00
Gabor Kiss-Vamosi
25f9500d5a solve warnings 2017-11-22 13:26:20 +01:00
Gabor Kiss-Vamosi
7de9b97c6c lv_indev_t element rename 2017-11-22 10:34:30 +01:00
Gabor Kiss-Vamosi
bd60d7cd3b lv_tabview: drag bugfix 2017-11-22 10:34:08 +01:00
Gabor Kiss-Vamosi
eaacc34c6e Update TODO_MAJOR.md 2017-11-21 17:48:53 +01:00
Gabor Kiss-Vamosi
b2ef660b3a lv_tabview: obj type check in realign 2017-11-21 17:04:06 +01:00
Gabor Kiss-Vamosi
22f9c69fc1 bugfixes 2017-11-21 14:52:23 +01:00
Gabor Kiss-Vamosi
2f896ab068 slider knob shadow bugfix 2017-11-21 12:26:46 +01:00
Gabor Kiss-Vamosi
9d2d7ee869 revert include paths 2017-11-21 10:51:10 +01:00
Gabor Kiss-Vamosi
b749236724 revert adding misc submodule 2017-11-21 10:48:21 +01:00
Gabor Kiss-Vamosi
fc6f7ceba4 add misc as submodule 2017-11-21 10:38:31 +01:00
Gabor Kiss-Vamosi
d4aba14fea misc remove 2017-11-21 10:37:09 +01:00
Gabor Kiss-Vamosi
cff1c299ab add misc as submodule 2017-11-21 10:35:57 +01:00
Gabor Kiss-Vamosi
8fd12c53d2 style renames 2017-11-20 14:26:18 +01:00
Gabor Kiss-Vamosi
68133801d8 lv_hal_disp: remove the unused hor_res and ver_res 2017-11-20 13:20:53 +01:00
Gabor Kiss-Vamosi
79e3951ac8 lv_indev: keyboard ignor key == 0 2017-11-20 13:00:55 +01:00
Gabor Kiss-Vamosi
4ca6a04ce3 minor fixes 2017-11-19 22:24:57 +01:00
Gabor Kiss-Vamosi
cc687c8ead merge to beta 2017-11-19 21:54:07 +01:00
Gabor Kiss-Vamosi
1e139dc86c Release v5.0.0-beta 2017-11-19 21:30:28 +01:00
Gabor Kiss-Vamosi
552e7a8cf1 integrate img_conf into lv_conf.h 2017-11-19 21:16:53 +01:00
Gabor Kiss-Vamosi
dc9b619307 minor API updates 2017-11-19 20:45:40 +01:00
Gabor Kiss-Vamosi
1f6855f085 Update TODO_MINOR.md 2017-11-19 20:44:33 +01:00
Gabor Kiss-Vamosi
fef902f1da keyboard device support 2017-11-19 19:28:45 +01:00
Gabor Kiss-Vamosi
ec8deaad69 Update TODO_MINOR.md 2017-11-19 12:53:52 +01:00
Gabor Kiss-Vamosi
f66a45ba8b Update TODO_MINOR.md 2017-11-19 12:53:50 +01:00
Gabor Kiss-Vamosi
40f8a12c40 Update TODO_MINOR.md 2017-11-19 12:53:19 +01:00
Gabor Kiss-Vamosi
3ca4aa6858 Update TODO_MINOR.md 2017-11-19 09:58:40 +01:00
Gabor Kiss-Vamosi
4004153a5a Update TODO_MINOR.md 2017-11-19 09:48:34 +01:00
Gabor Kiss-Vamosi
a006082a47 rename enums to be general (e.g. lv_cont_layout_t -> lv_layout_t) 2017-11-18 00:18:19 +01:00
Gabor Kiss-Vamosi
7753257842 theme: add default 2017-11-18 00:17:21 +01:00
Gabor Kiss-Vamosi
63d54b0212 some api updates and style border.part added 2017-11-17 15:43:08 +01:00
Gabor Kiss-Vamosi
feb445d558 Update TODO_MINOR.md 2017-11-16 17:09:06 +01:00
Gabor Kiss-Vamosi
b973dd342a lv_theme: integrate into the library
add lv_theme
2017-11-16 15:38:02 +01:00
Gabor Kiss-Vamosi
e3378d23d4 consistent abbreviations 2017-11-16 10:20:44 +01:00
Gabor Kiss-Vamosi
38c799e27e lv_roller: add text recolor in selected area 2017-11-15 22:23:17 +01:00
Gabor Kiss-Vamosi
350ceddf3f name fixes 2017-11-15 21:06:44 +01:00
Gabor Kiss-Vamosi
86daac1424 add lv_xxx_style_t and unify style set/get 2017-11-15 15:50:33 +01:00
Gabor Kiss-Vamosi
39075fe06d update label, image and line API 2017-11-13 16:11:05 +01:00
Gabor Kiss-Vamosi
b8b0869a54 Update TODO_MINOR.md 2017-11-13 08:39:32 +01:00
Gabor Kiss-Vamosi
eb0383ea89 refresh with font_get_height_scale() 2017-11-11 14:23:05 +01:00
Gabor Kiss-Vamosi
cab8e4e7f5 update lv_objx_templ 2017-11-10 15:29:53 +01:00
Gabor Kiss-Vamosi
f03efd9460 btn style rename 2017-11-10 15:26:35 +01:00
Gabor Kiss-Vamosi
8f715434ac set function order 2017-11-10 15:01:40 +01:00
Gabor Kiss-Vamosi
4ecd589d84 slider and sw update 2017-11-09 17:13:10 +01:00
Gabor Kiss-Vamosi
0a5bd40430 lv_slider: bugfix on update drag-set mechanism 2017-11-09 08:37:43 +01:00
Gabor Kiss-Vamosi
6862cbdec2 lv_slider: update drag-set mechanism 2017-11-08 11:37:01 +01:00
Gabor Kiss-Vamosi
72605cac51 lv_mbox: fix duplicated function names 2017-11-08 11:11:40 +01:00
Gabor Kiss-Vamosi
a2ab0cde79 mbox: add btn width attribute 2017-11-08 11:07:34 +01:00
Gabor Kiss-Vamosi
d6739192fd add early return on LV_RES_INV in signal function 2017-11-07 17:00:55 +01:00
Gabor Kiss-Vamosi
410ea1f8f1 mbox further api update 2017-11-07 16:18:38 +01:00
Gabor Kiss-Vamosi
e42d63c7be mbox api update 2017-11-07 15:13:34 +01:00
Gabor Kiss-Vamosi
f7baf2716a lv_list: api update 2017-11-07 14:31:35 +01:00
Gabor Kiss-Vamosi
0671556002 lv_indev: remve debug printfs 2017-11-07 14:31:18 +01:00
Gabor Kiss-Vamosi
36f236bc44 lv_label: roll long mode bugfix on size change 2017-11-07 14:30:52 +01:00
Gabor Kiss-Vamosi
b160b1d1d5 indev: stop drag thorw when it already does nothing (e.g. page scrollable) 2017-11-06 16:27:00 +01:00
Gabor Kiss-Vamosi
1246878f00 lv_roller: API added 2017-11-05 22:37:03 +01:00
Gabor Kiss-Vamosi
27237acc88 Update TODO_MAJOR.md 2017-11-05 15:49:47 +01:00
Gabor Kiss-Vamosi
8eb4317e37 lv_ta: minor updates on API 2017-11-05 15:19:36 +01:00
Gabor Kiss-Vamosi
4412b13928 ta api updated and tested 2017-11-05 14:12:50 +01:00
Gabor Kiss-Vamosi
9497090093 Update TODO_MINOR.md 2017-11-05 01:05:46 +01:00
Gabor Kiss-Vamosi
8175e4e723 Update TODO_MINOR.md 2017-11-05 01:05:09 +01:00
Gabor Kiss-Vamosi
a256f58de1 Update TODO_MAJOR.md 2017-11-05 01:04:24 +01:00
Gabor Kiss-Vamosi
44818d3527 further api updates (begin to move signal function as static) 2017-11-05 00:48:57 +01:00
Gabor Kiss-Vamosi
c517d73a71 add static inline function to clraify API (bar, slider, sw, cb, btn, btnm) 2017-11-03 13:39:37 +01:00
Gabor Kiss-Vamosi
4076c8ddaf lv_bar: range bugfix 2017-11-03 10:22:40 +01:00
Gabor Kiss-Vamosi
5325a93990 minor style updates 2017-11-02 17:44:00 +01:00
Gabor Kiss-Vamosi
a1afdc5f3c label: move align to obj. attribut from style 2017-11-02 09:25:37 +01:00
Gabor Kiss-Vamosi
6e5db9e44e style: move opa to body.opa and make border.opa independent from it 2017-11-02 01:37:32 +01:00
Gabor Kiss-Vamosi
2b6a69068c Update TODO_MAJOR.md 2017-11-01 11:16:51 +01:00
Gabor Kiss-Vamosi
21475e86f2 apply the new (global variable oriented) font system 2017-11-01 11:14:12 +01:00
Gabor Kiss-Vamosi
c13507ae0c lv_kb: Enter key name fix 2017-10-31 17:10:10 +01:00
Gabor Kiss-Vamosi
0646509b9a lv_style anim solve warning 2017-10-31 16:47:44 +01:00
Gabor Kiss-Vamosi
0dbc0f0442 lv_btn_set_styles() revert to set all styles paramter list 2017-10-31 16:25:52 +01:00
Gabor Kiss-Vamosi
919a8e81ea styles: make styles to global variables 2017-10-30 17:31:48 +01:00
Gabor Kiss-Vamosi
5608bf868e bugfixes 2017-10-30 17:11:56 +01:00
Gabor Kiss-Vamosi
df238e2f44 Update TODO_MAJOR.md 2017-10-26 21:22:26 +02:00
Gabor Kiss-Vamosi
f0080b944d fixes and updates according to test results 2017-10-26 21:20:10 +02:00
Gabor Kiss-Vamosi
a1b4da6a30 Update TODO_PATCH.md 2017-10-24 10:03:06 +02:00
Gabor Kiss-Vamosi
816327f4f7 lv_hal: comment update 2017-10-20 22:41:10 +02:00
Gabor Kiss-Vamosi
964499a06f lv_hal: update function names and typedefs 2017-10-20 22:11:18 +02:00
Gabor Kiss-Vamosi
866f53658e remove lv_example because it is moved to seperate repo 2017-10-20 21:34:43 +02:00
Gabor Kiss-Vamosi
8707f3f122 Update TODO_MINOR.md 2017-10-20 21:20:35 +02:00
Gabor Kiss-Vamosi
09c51d1a6a Update TODO_MAJOR.md 2017-10-20 21:18:10 +02:00
Gabor Kiss-Vamosi
bf1903d17b API updates 2017-10-20 15:37:50 +02:00
Gabor Kiss-Vamosi
2ea1af59b9 further style renames + remove LV_DOWNSCALE 2017-10-20 10:17:02 +02:00
Gabor Kiss-Vamosi
8c9d4b58ed further renames in styles 2017-10-19 12:46:49 +02:00
Gabor Kiss-Vamosi
0856790760 lv_style: mass attribute renames 2017-10-18 16:07:19 +02:00
Gabor Kiss-Vamosi
d9205adc60 add lv_hal as normal folder (not from hal repo) 2017-10-18 14:09:25 +02:00
Gabor Kiss-Vamosi
2b44c68794 lv_hal_disp_copy updated 2017-10-18 13:47:35 +02:00
Gabor Kiss-Vamosi
c9b1d0c75f Merge pull request #41 from BenQoo/beta
Add Missing Right Curly Bracket
2017-10-17 10:23:53 +02:00
BenQoo
7a65dca973 Add missing right curly bracket. 2017-10-17 15:34:18 +08:00
Gabor Kiss-Vamosi
bfb3a105ac lv_ta: OUTLINE cursor vpad bugfix 2017-10-16 08:22:18 +02:00
Gabor Kiss-Vamosi
c96b1d4db3 Update CONTRIBUTING.md 2017-10-15 12:32:12 +02:00
Gabor Kiss-Vamosi
dbe741da12 lv_obj: lv_obj_del: bugfix 2017-10-12 17:00:18 +02:00
Gabor Kiss-Vamosi
49547a33f8 lv_btnm: control byte added 2017-10-12 16:59:51 +02:00
Gabor Kiss-Vamosi
49a50152cc lv_indev: update indev reset behavior 2017-10-12 16:59:09 +02:00
Gabor Kiss-Vamosi
f1ba07eab7 Update TODO_MAJOR.md 2017-10-12 15:36:01 +02:00
Gabor Kiss-Vamosi
7b24b47adf lv_bar: bugfix to handle negative range correctly 2017-10-11 16:04:19 +02:00
Gabor Kiss-Vamosi
bf8cf9fb81 lv_label: scroll anim position bugifx 2017-10-11 16:03:43 +02:00
Gabor Kiss-Vamosi
a7a6812a19 rename lv_top/sys_layer() to lv_layer_top/sys() 2017-10-11 09:11:29 +02:00
Gabor Kiss-Vamosi
af2b6f8034 update default screen style to white baclground 2017-10-11 09:10:47 +02:00
Gabor Kiss-Vamosi
9aac004c2c Update TODO_MAJOR.md 2017-10-11 08:58:17 +02:00
Gabor Kiss-Vamosi
7f6bdbe6eb Merge branch 'beta' into dev-5.0 2017-10-10 16:39:57 +02:00
Gabor Kiss-Vamosi
f06534eb2e Merge remote-tracking branch 'origin/beta' into dev-5.0 2017-10-10 16:39:45 +02:00
Gabor Kiss-Vamosi
e42fe2fead Merge branch 'beta' of https://github.com/littlevgl/lvgl into beta 2017-10-10 16:34:37 +02:00
Gabor Kiss-Vamosi
a78ea8f2e8 lv_hal update 2017-10-10 16:34:15 +02:00
Gabor Kiss-Vamosi
dcf50104f0 lv_obj: add top and sys layers 2017-10-10 16:17:23 +02:00
Gabor Kiss-Vamosi
57619fca06 fix a style refresh issue 2017-10-10 16:15:59 +02:00
Gabor Kiss-Vamosi
748009735c lv_ta: apply hpad/vpad on cursor position/size 2017-10-09 16:30:47 +02:00
Gabor Kiss-Vamosi
577fc7b528 lv_page: refresh size according to vpad/hpad on STYLE_CHANGE 2017-10-09 16:11:54 +02:00
Gabor Kiss-Vamosi
d6fe59bf73 Merge branch 'beta' of https://github.com/littlevgl/lvgl into dev-5.0 2017-10-09 15:30:08 +02:00
Gabor Kiss-Vamosi
dedad11102 remove all app. related includes 2017-10-09 15:29:50 +02:00
Gabor Kiss-Vamosi
d32692922b lv_conf_templ: remove app. related parts 2017-10-09 15:28:15 +02:00
Gabor Kiss-Vamosi
7b3c0009f6 delete application (moved as examples to a new repo) 2017-10-09 15:26:54 +02:00
Gabor Kiss-Vamosi
a5c85244a7 dispi->indev rework and integration 2017-10-09 15:21:26 +02:00
Gabor Kiss-Vamosi
aea3154b3b Merge pull request #40 from scopa90/patch-1
lv_btn: lv_btn_set_styles() do not change style on NULL
2017-10-09 14:27:44 +02:00
scopa90
f7c8fe9857 Update lv_btn.c
Allow NULL as parameter to lv_btn_set_styles for any style which is not to be changed.
2017-10-09 13:24:28 +01:00
Gabor Kiss-Vamosi
eb067af098 Update TODO_MAJOR.md 2017-10-09 08:31:52 +02:00
Gabor Kiss-Vamosi
71c5c5814c solve conflicts 2017-10-05 13:46:59 +02:00
Gabor Kiss-Vamosi
73b042cc82 add the new hal folder 2017-10-05 13:38:45 +02:00
Gabor Kiss-Vamosi
4d2714facc lv_tabview: set the first tab as active when added 2017-10-05 12:55:32 +02:00
Gabor Kiss-Vamosi
d27d8fd087 lv_roller: now works with drag throw 2017-10-05 12:51:29 +02:00
Gabor Kiss-Vamosi
e468f0d5fc fumbling with git... 2017-10-05 11:35:41 +02:00
Gabor Kiss-Vamosi
c0715b4c63 rever reset 2017-10-05 11:29:21 +02:00
Gabor Kiss-Vamosi
445b5ad231 Merge branch 'new_objs' into beta 2017-10-05 11:11:35 +02:00
Gabor Kiss-Vamosi
315bf64ccb merge utf8 2017-10-05 11:10:44 +02:00
Gabor Kiss-Vamosi
d6ccc48963 lv_ta: LINE and UNDERLINE cursor aligned symmetrically 2017-10-03 13:16:55 +02:00
Gabor Kiss-Vamosi
1544f6b6ed Update TODO_MINOR.md 2017-10-03 11:37:13 +02:00
Gabor Kiss-Vamosi
d1dcc41f69 lv_ta: remove forgotten printf 2017-10-03 11:35:53 +02:00
Gabor Kiss-Vamosi
0777561390 lv_ta: utf8 update 2017-10-03 10:42:38 +02:00
Gabor Kiss-Vamosi
0c473c6ccb lv_roller: make roller_scrl_signal to static 2017-10-02 17:19:25 +02:00
Gabor Kiss-Vamosi
974540cc63 lv_ta: fix cursor pos in one_line mode at line end 2017-10-02 16:50:34 +02:00
Gabor Kiss-Vamosi
fc3b967f33 Merge branch 'dev-5.0' of https://github.com/littlevgl/lvgl into dev-5.0 2017-10-02 15:15:42 +02:00
Gabor Kiss-Vamosi
b1abcb9310 all 3 hal elements are integrated 2017-10-02 15:14:14 +02:00
Gabor Kiss-Vamosi
3d38150563 move misc back to root folder 2017-09-27 16:07:33 +02:00
Gabor Kiss-Vamosi
380c0b1408 move misc beck to root folder 2017-09-27 16:03:01 +02:00
Gabor Kiss-Vamosi
5dabd945bd Merge branch 'new_objs' of https://github.com/littlevgl/lvgl into utf8 2017-09-27 15:19:19 +02:00
Gabor Kiss-Vamosi
9cd49f1554 lv_ta: remove a forgotten debug printf 2017-09-27 15:15:47 +02:00
Gabor Kiss-Vamosi
c72bb4502a lv_ta: cursor style bugfix on '\n' 2017-09-27 15:12:29 +02:00
Gabor Kiss-Vamosi
ebfe8fbfd4 update to the new font desciption 2017-09-27 13:05:35 +02:00
Gabor Kiss-Vamosi
5a6350df2a lv_ta: cursor style bugfix on '\n' 2017-09-25 12:11:42 +02:00
Gabor Kiss-Vamosi
0afd6cee46 Update README.md 2017-09-23 23:28:06 +02:00
Gabor Kiss-Vamosi
a6f5141f42 Update README.md 2017-09-23 23:27:17 +02:00
Gabor Kiss-Vamosi
fbb88452fb Update README.md 2017-09-23 23:25:12 +02:00
Kiss-Vamosi Gabor
af11110e0f lv_roller: comments added 2017-09-23 22:14:31 +02:00
Gabor Kiss-Vamosi
d07d4f5300 Update TODO_MAJOR.md 2017-09-22 23:56:56 +02:00
Kiss-Vamosi Gabor
b557331d63 lv_roller updates 2017-09-22 23:55:54 +02:00
Kiss-Vamosi Gabor
280e039e19 lv_ddlist: change auto_size to fix_height 2017-09-22 23:55:42 +02:00
Kiss-Vamosi Gabor
4935b88588 lv_objx_templ: minor update in comments 2017-09-22 23:55:03 +02:00
Kiss-Vamosi Gabor
d950ae0ee4 lv_obj_set_style refresh NULL styles behind glass styles 2017-09-22 23:54:31 +02:00
Gabor Kiss-Vamosi
1bbe6e1068 lv_ta: full UTF-8 support 2017-09-22 13:58:01 +02:00
Gabor Kiss-Vamosi
6e3445c2d6 Merge branch 'new_objs' into utf8 2017-09-22 09:54:22 +02:00
Gabor Kiss-Vamosi
569edb7685 utf-8: lv_label full support, lv_ta in pwd_mode still not working 2017-09-22 09:52:53 +02:00
Gabor Kiss-Vamosi
d610872ee7 Update TODO_MAJOR.md 2017-09-21 14:18:54 +02:00
Gabor Kiss-Vamosi
8414b1de2b lv_ta: cursor types addd (line, block, outline, underline) 2017-09-15 10:22:12 +02:00
Gabor Kiss-Vamosi
0b8daf5283 Update TODO_MINOR.md 2017-09-14 06:46:31 +02:00
Gabor Kiss-Vamosi
cb6824755d Update TODO_MINOR.md 2017-09-13 15:41:51 +02:00
Gabor Kiss-Vamosi
1782af2abb Update TODO_MINOR.md 2017-09-13 15:41:32 +02:00
Gabor Kiss-Vamosi
45f4b64cd4 Update TODO_PATCH.md 2017-09-13 12:44:16 +02:00
Gabor Kiss-Vamosi
cf69a7ae33 lv_ta: cursor style come from page bg. is scrl. has glass == 1 2017-09-13 10:08:21 +02:00
Gabor Kiss-Vamosi
637a41d392 lv_ta: fix height when one_line and FONT_ANTIALIAS 2017-09-12 10:55:36 +02:00
Gabor
45b8364b0e lv_roller: lv_ddlist_set_selected() updated to work with roller too 2017-09-11 12:43:14 +02:00
Gabor
f55d6fa640 lv_ta: label width bugfix 2017-09-11 10:28:14 +02:00
Gabor
ecc8c8af8f lv_label: draw background if the style explictly set 2017-09-11 10:15:40 +02:00
Gabor
0c45e9eac4 lv_ta: lv_ta_del() fix in pwd mode 2017-09-03 16:09:03 +02:00
Gabor
b6820e7e79 Merge branch 'beta' of https://github.com/littlevgl/lvgl into beta 2017-09-03 16:03:16 +02:00
Gabor
024d776d2c lv_btnm.h add missing semi colon 2017-09-03 16:02:37 +02:00
Gabor
7148f377c4 lv_roller: lv_roler added but not ready yet 2017-09-03 16:01:51 +02:00
Gabor
9cefda4f7b lv_label: lv_label_append_text() renamed and upgraded to lv_label_ins_text() 2017-09-03 16:01:03 +02:00
Kiss-Vamosi Gabor
f78046acce lv_ta_get_txt bugfix in pwm_mode 2017-08-29 15:08:18 +02:00
Gabor
9405abb3fd Add misc and hal 2017-08-24 17:01:54 +02:00
Gabor
eaf7a123d4 Merge branch 'beta' into dev-5.0 2017-08-24 15:56:11 +02:00
Gabor
fce6d2982e add 'misc' as submodule 2017-08-24 15:56:02 +02:00
Gabor
99dbf35953 lv_tabview: free allocated memory on in clean up signal 2017-08-24 14:30:14 +02:00
Gabor
892745a592 lv_kb: action call bugfix 2017-08-24 14:29:28 +02:00
Gabor
922d0ab150 lv_btnm_set_styles support trel, tpr and ina styles (API change) 2017-08-24 14:28:02 +02:00
Gabor Kiss-Vamosi
ed8df15de4 Update TODO_MAJOR.md 2017-08-24 14:24:35 +02:00
Gabor
ad2a9a4cea Merge branch 'new_objs' into beta 2017-08-23 16:42:52 +02:00
Gabor
ce50c08e91 Merge branch 'bugfix' into beta 2017-08-23 14:39:39 +02:00
Gabor
64852194ea use relative includes where it is possible 2017-08-23 14:39:09 +02:00
Gabor
0ef1fa0627 lv_tabview: add API 2017-08-23 14:24:34 +02:00
Gabor
fea552511e lv_objx_templ: create 'Add/remove functions' section 2017-08-23 14:24:11 +02:00
Gabor
7c90b4630b lv_conf_templ, lvgl.h: update with lv_tabview and lv_kb 2017-08-23 14:23:07 +02:00
Gabor
90d8a11917 lv_ta: lv_ta_cursor_show() don't let cursor visible if disabled 2017-08-23 14:19:42 +02:00
Gabor
1bdc650635 lv_kb: lv_kb_set_mode bugfix 2017-08-23 14:15:33 +02:00
Gabor Kiss-Vamosi
d0d46d482e Update TODO_MINOR.md 2017-08-23 09:25:25 +02:00
Gabor
af0c8d57b5 lv_kb: add Keyboard object type 2017-08-23 09:24:23 +02:00
Gabor Kiss-Vamosi
dc7ac427b5 Update CONTRIBUTING.md 2017-08-23 05:32:17 +02:00
Gabor
ebf7fd20ae Merge branch 'beta' into new_objs 2017-08-22 16:41:32 +02:00
Gabor
6d68aabc41 lv_objx_templ: formatting 2017-08-22 16:41:23 +02:00
Gabor
8ad9b481a8 lv_img: check the USE_FSINT and USE_UFS better 2017-08-22 12:51:18 +02:00
Gabor Kiss-Vamosi
e6028a913c Update CONTRIBUTING.md 2017-08-22 09:41:13 +02:00
Gabor Kiss-Vamosi
53b7ef0429 Update TODO_PATCH.md 2017-08-21 15:35:38 +02:00
Gabor
14cd444f8d lv_list work without lv_img 2017-08-21 14:55:06 +02:00
Gabor
525a9e381f lv_objx_templ: updated 2017-08-21 14:41:50 +02:00
Gabor
3a4463d2e4 lv_tab: all working, API not ready 2017-08-21 14:41:28 +02:00
Gabor Kiss-Vamosi
2aab61b91d Update TODO_PATCH.md 2017-08-20 19:26:16 +02:00
Gabor Kiss-Vamosi
4b59ae0976 Update TODO_MINOR.md 2017-08-20 02:20:01 +02:00
Gabor Kiss-Vamosi
fa5edfb53e Update TODO_PATCH.md 2017-08-20 02:18:38 +02:00
Gabor
3980f08440 lv_btnm: add lv_btnm_set_tgl() 2017-08-20 02:16:21 +02:00
Gabor
237edae7df lv_sw: all feature is working 2017-08-18 21:14:11 +02:00
Gabor
61c5777a6b lv_slider: knob_in + handle negative hpad/vpad to make bigger bg. then knob 2017-08-18 21:11:22 +02:00
Gabor
6852f6ee80 Merge branch 'beta' into lv_sw 2017-08-18 17:43:55 +02:00
Gabor
2965b351a5 lv_sw: skeleton added 2017-08-18 17:43:14 +02:00
Gabor Kiss-Vamosi
798e021803 Update TODO_PATCH.md 2017-08-17 13:19:59 +02:00
Gabor Kiss-Vamosi
def6cb2c92 Update TODO_MINOR.md 2017-08-17 11:16:09 +02:00
Gabor Kiss-Vamosi
a053641ea5 Update TODO_PATCH.md 2017-08-17 11:15:42 +02:00
Gabor Kiss-Vamosi
c6bf07973e Update TODO_MINOR.md 2017-08-17 11:15:08 +02:00
Gabor
7dfb4eb374 Release v4.2.0 2017-08-17 11:07:00 +02:00
Gabor
b424927b80 Merge branch 'master' of https://github.com/littlevgl/lvgl 2017-08-17 11:06:24 +02:00
Gabor
42f040f885 Merge branch 'beta' 2017-08-17 11:05:55 +02:00
Gabor
f776a8f1cf lv_ddlist: remove unused variable 2017-08-17 10:44:42 +02:00
Gabor
9fddc294ab Merge branch 'examples' into beta 2017-08-17 10:42:23 +02:00
Gabor
7fdd633561 lv_example: add screenshots 2017-08-17 10:41:48 +02:00
Gabor
b8080ef1db lv_examle: renames, add 'lv_ex_' prefix 2017-08-17 09:56:01 +02:00
Gabor
e044e02541 lv_example: style_usage example added 2017-08-17 09:42:12 +02:00
Gabor Kiss-Vamosi
22dabf9c2a Update TODO_MINOR.md 2017-08-16 20:06:49 +02:00
Gabor Kiss-Vamosi
96a43ba3c5 Update TODO_MINOR.md 2017-08-16 12:39:40 +02:00
Gabor
a8721ff3c3 lv_btnm: 0. byte (width dsc) 1. byte: hidden if \177 (0x7F) 2017-08-16 12:36:22 +02:00
Gabor Kiss-Vamosi
d15980cdd3 Update TODO_MINOR.md 2017-08-16 11:49:22 +02:00
Gabor Kiss-Vamosi
2e60555506 Update TODO_MINOR.md 2017-08-16 11:41:30 +02:00
Gabor Kiss-Vamosi
692a4b33c8 Update TODO_PATCH.md 2017-08-16 11:40:14 +02:00
Gabor
da0a235a33 Merge branch 'bugfix' into beta 2017-08-16 11:38:49 +02:00
Gabor
77e1dc21bb lv_ta: fix memory leak on delete in password mode 2017-08-16 11:38:26 +02:00
Gabor
94b6be4c3d Merge branch 'beta' into bugfix 2017-08-16 11:34:48 +02:00
Gabor
1ff5f1f91d lv_ta: lv_ta_set_one_line added 2017-08-16 11:28:33 +02:00
Gabor
3e053db00b lv_slider: don't let indicator or bar to disappear because of hpad/vpad 2017-08-16 11:28:33 +02:00
Gabor Kiss-Vamosi
317c8f40da Update CONTRIBUTING.md 2017-08-14 17:10:33 +02:00
Gabor Kiss-Vamosi
267d0d96af Update CONTRIBUTING.md 2017-08-14 17:09:56 +02:00
Gabor Kiss-Vamosi
660a986e04 Update TODO_MINOR.md 2017-08-14 17:03:56 +02:00
Gabor Kiss-Vamosi
b83023703b Update CONTRIBUTING.md 2017-08-13 23:11:15 +02:00
Gabor Kiss-Vamosi
740eaa56b7 Update TODO_MINOR.md 2017-08-13 23:04:20 +02:00
Gabor Kiss-Vamosi
5b06a41ebc Merge pull request #17 from iamniels/beta
update lv_init function name
2017-08-12 22:26:04 +02:00
niels
894d5f5861 update lv_init function name 2017-08-12 17:08:29 +02:00
Gabor Kiss-Vamosi
969640717f Update TODO_PATCH.md 2017-08-12 11:43:21 +02:00
Gabor
d69c18dba4 examples: style_usage: skeleton added 2017-08-12 10:10:16 +02:00
Gabor
125b199f85 examples: obj_usage: comment updates 2017-08-12 10:09:27 +02:00
Gabor
4924e871b2 Merge branch 'beta' into examples 2017-08-11 19:52:41 +02:00
Gabor
4ab5d9459e lv_slider: don't let indicator or bar to disappear because of hpad/vpad 2017-08-11 19:51:08 +02:00
Gabor Kiss-Vamosi
ff3f2ed80c Update README.md 2017-08-11 08:14:36 +02:00
Gabor Kiss-Vamosi
dee00b08cc Update TODO_PATCH.md 2017-08-11 08:11:05 +02:00
Gabor Kiss-Vamosi
3052681761 Update TODO_MINOR.md 2017-08-08 10:23:34 +02:00
Gabor
a90aa4211b Merge branch 'double_vdb' into beta 2017-08-08 09:47:35 +02:00
Gabor
09f8e25fdd LV_VDB_DOUBLE: tested on STM32F429 Discovery 2017-08-08 09:47:17 +02:00
Gabor Kiss-Vamosi
702ba26dd8 Update TODO_MINOR.md 2017-08-07 23:26:36 +02:00
Gabor Kiss-Vamosi
7284aa0d05 Update TODO_MINOR.md 2017-08-07 23:17:21 +02:00
Gabor Kiss-Vamosi
fb5cee3b56 Update CONTRIBUTING.md 2017-08-04 19:16:46 +02:00
Kiss-Vamosi Gabor
d9147ae21b LV_VDB_DOUBLE: Add double virtual display buffer. Needs test on real hardware 2017-08-04 19:09:29 +02:00
Gabor Kiss-Vamosi
1749a0e7e1 Update TODO_MINOR.md 2017-08-04 18:29:49 +02:00
Gabor Kiss-Vamosi
3a7d160bfa Update TODO_MINOR.md 2017-08-04 18:28:51 +02:00
Gabor Kiss-Vamosi
958ad5f999 Update TODO_PATCH.md 2017-08-04 18:27:20 +02:00
Gabor Kiss-Vamosi
178f42b89a Update TODO_MINOR.md 2017-08-04 18:22:05 +02:00
Gabor Kiss-Vamosi
cd15f653f6 Update TODO_MAJOR.md 2017-08-04 18:17:09 +02:00
Gabor Kiss-Vamosi
6e1a32e891 Update TODO_PATCH.md 2017-08-04 12:46:25 +02:00
Gabor
0c1e3239b7 lv_slider: don't indicator or bar to disappear because of hpad/vpad 2017-08-04 12:40:43 +02:00
Gabor
e6b6c3a19c example obj_usage: begin 2017-08-04 12:37:32 +02:00
Gabor Kiss-Vamosi
f547a7dbc2 Update TODO_MINOR.md 2017-08-02 22:59:24 +02:00
Gabor Kiss-Vamosi
fa8846a2ce Update README.md 2017-08-02 22:17:19 +02:00
Gabor Kiss-Vamosi
e4cf96cb81 Update CONTRIBUTING.md 2017-08-02 22:14:57 +02:00
Gabor Kiss-Vamosi
9b51181575 Update TODO_MINOR.md 2017-07-31 08:25:32 +02:00
Gabor Kiss-Vamosi
22d79cd585 Update README.md 2017-07-31 01:21:29 +02:00
Gabor Kiss-Vamosi
25651261c2 Update TODO_MAJOR.md 2017-07-31 01:14:41 +02:00
Gabor Kiss-Vamosi
687dea0543 Update README.md 2017-07-30 23:44:59 +02:00
Gabor Kiss-Vamosi
55b7a9f513 Update README.md 2017-07-30 23:38:13 +02:00
Gabor Kiss-Vamosi
61881ca7cd Update README.md 2017-07-30 23:36:42 +02:00
Gabor Kiss-Vamosi
2ab2a5a973 Update README.md 2017-07-30 15:50:04 +02:00
Gabor Kiss-Vamosi
d3a07c866f Update TODO_MAJOR.md 2017-07-30 15:47:44 +02:00
Kiss-Vamosi Gabor
7c3263bc7b licence move back to root 2017-07-30 13:47:43 +02:00
Gabor Kiss-Vamosi
053e70342c Update CONTRIBUTING.md 2017-07-30 13:45:36 +02:00
Gabor Kiss-Vamosi
46f51b1d67 Update CONTRIBUTING.md 2017-07-30 13:45:06 +02:00
Gabor Kiss-Vamosi
81e84ed829 Update CONTRIBUTING.md 2017-07-30 13:44:11 +02:00
Kiss-Vamosi Gabor
04197a83d0 create docs folder and move documents there 2017-07-30 13:42:30 +02:00
Gabor Kiss-Vamosi
931e74e2a6 Update TODO_PATCH.md 2017-07-30 13:40:36 +02:00
Gabor Kiss-Vamosi
7b26cdc75e Create TODO_PATCH.md 2017-07-30 13:39:27 +02:00
Gabor Kiss-Vamosi
c72c8c62de Update TODO_MAJOR.md 2017-07-30 13:35:55 +02:00
Gabor Kiss-Vamosi
e65f781bbd Update TODO_MINOR.md 2017-07-30 13:35:27 +02:00
Gabor Kiss-Vamosi
2846cff2d3 Update TODO_MINOR.md 2017-07-30 13:35:06 +02:00
Gabor Kiss-Vamosi
31fcc7d395 Create TODO_MINOR.md 2017-07-30 13:32:59 +02:00
Gabor Kiss-Vamosi
ec776b48d5 Create TODO_MAJOR.md 2017-07-30 12:22:39 +02:00
Gabor Kiss-Vamosi
b8226ace04 Update CONTRIBUTING.md 2017-07-30 12:11:41 +02:00
Gabor Kiss-Vamosi
3bf1dde5b2 Create CONTRIBUTING.md 2017-07-30 11:52:11 +02:00
Gabor Kiss-Vamosi
3b3ba1b5df Create CODE_OF_CONDUCT.md 2017-07-30 09:46:37 +02:00
Gabor
d1837d2684 Merge branch 'examples' into beta 2017-07-28 15:01:14 +02:00
Gabor
fbe39b7357 Merge branch 'lv_group' into beta 2017-07-28 14:58:50 +02:00
Gabor
f4b9b2a477 lv_label: remove old test code 2017-07-28 14:32:27 +02:00
Gabor
af47b4bd40 lv_ta: copy password mode too on obj. copy 2017-07-28 14:26:51 +02:00
Gabor
e78c3d132c lv_style_h: bad funcion declaration fixed 2017-07-28 14:19:52 +02:00
Gabor
2dbda3d004 Merge branch 'style_anim' into beta 2017-07-28 13:58:39 +02:00
Gabor
6d4791c6e9 style animation added 2017-07-28 13:57:56 +02:00
Gabor
3c2c4c5f86 examples: encoder_ctrl comment update 2017-07-28 11:35:53 +02:00
Gabor
358f7cf00b examples: encoder_ctrl comments added 2017-07-28 11:08:23 +02:00
Gabor
7248eef1f0 Merge branch 'beta' into examples 2017-07-27 14:10:48 +02:00
Gabor
422481533e merge lv_group to examples 2017-07-27 14:02:35 +02:00
Gabor
6cd9fda009 lv_cont: PRETTY layout arrange proportionally if 2 objs. in a row 2017-07-27 13:45:37 +02:00
Gabor
c46e31c536 examples: encorder_ctrl: GUI update 2017-07-27 13:42:55 +02:00
Gabor
a7a24bcf84 example_encoder: GUI added 2017-07-27 13:42:55 +02:00
Gabor
73d4fd00bd lv_obj: lv_ddlist: bugfix, copy 'num_opt' attribute too 2017-07-27 13:42:55 +02:00
Gabor
e52a2fb87c lv_obj: lv_obj_set_parent: bugfix, send CHILD_CHG signal to the old parent too 2017-07-27 13:42:55 +02:00
Gabor
2bdfdc0ed2 hello_world example added and encoder_ctrl begun 2017-07-27 13:42:55 +02:00
Gabor
6b3444271c lv_group: focus_freeze added 2017-07-27 12:07:21 +02:00
Gabor
78c5ad0cdb example_encoder: GUI added 2017-07-27 10:49:44 +02:00
Gabor
df00db0dc2 lv_obj: lv_ddlist: bugfix, copy 'num_opt' attribute too 2017-07-27 10:49:19 +02:00
Gabor
89731ae74a lv_obj: lv_obj_set_parent: bugfix, send CHILD_CHG signal to the old parent too 2017-07-27 10:48:16 +02:00
Gabor
592a54f8ee hello_world example added and encoder_ctrl begun 2017-07-26 11:37:25 +02:00
Gabor Kiss-Vamosi
9fcb264e05 Update README.md 2017-07-25 10:46:17 +02:00
Gabor
1456853135 lv_example: add empty files to build the skeleton 2017-07-25 10:44:40 +02:00
Gabor
92ebe1f940 Examples README added 2017-07-25 10:34:33 +02:00
Gabor
cd83e6febc Merge branch 'lv_group' into beta 2017-07-25 09:05:18 +02:00
Gabor
9fcb8e0d1b lv_group: LV_SIGNAL_SEND sends a character instead of LV_SIGNAL_INC/DEC 2017-07-25 09:02:21 +02:00
Gabor
adbd978155 lv_btn: run rel. action on Select, Inc. Dec. 2017-07-24 12:19:15 +02:00
Gabor
455676e982 lv_group: works with obj. copy + bug fixes 2017-07-20 13:29:22 +02:00
Gabor
faf33212e7 lv_group: group signals are added to releated object types 2017-07-20 12:26:34 +02:00
Kiss-Vamosi Gabor
8dba219f42 lv_group: object types are activated correctly (ddlist open/close, label background, page scrl activate) 2017-07-20 01:09:20 +02:00
Gabor
ab21e705d5 lv_group: add lv_group.c,h 2017-07-19 15:19:10 +02:00
Gabor
4fd0dfc7c4 lv_cong_templ.h: disable lv_app_wifi/gsm/ethetnet 2017-07-12 14:33:12 +02:00
Gabor
fb49ed806e version number fix 2017-07-12 14:25:49 +02:00
Gabor
5353906dea new patch: v4.1.1 2017-07-12 14:12:10 +02:00
Gabor
25fb3e368a lv_app_wifi/gsm: save/load config. 2017-07-12 14:09:58 +02:00
Gabor
811386090d lv_app_files: back symbol bugfix 2017-07-12 14:02:39 +02:00
Gabor
186a5c07c2 lv_app_bencmark: bg name bugfix 2017-07-12 14:02:03 +02:00
Gabor
c6179239e1 lv_app win opan/close anim use '_us' functions 2017-07-12 13:59:23 +02:00
Gabor
d1e6063551 merge master 2017-07-10 17:49:11 +02:00
Gabor
9de436a61b lv_ddlist: fix misspelled function name 2017-07-10 17:29:53 +02:00
Gabor
e00cd04963 lv_app: lv_scr_app(), lv_app_add_dsc() added 2017-07-10 17:29:19 +02:00
Gabor
a24c6d30b2 lv_app_wifi/gsm: bugfixes/updates 2017-07-10 17:28:31 +02:00
Gabor
cc98cfb27e lv_app_ethernet: simple but working version added 2017-07-10 17:27:49 +02:00
Gabor
37c9154b13 lv_app_wifi: buffer and resend last message 2017-07-10 11:38:03 +02:00
Kiss-Vamosi Gabor
3632b1b916 lv_app_benchmark: add 16 and 8 bit wallpapers 2017-07-09 15:57:55 +02:00
Kiss-Vamosi Gabor
1fc4c9a1f7 release v4.1.0 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
7b98b1e7a7 header udated with __cplusplus define 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
6f1d63bf42 LV_CONT_LAYOUT_PRETTY with LV_PROTECT_FOLLOW bugfix 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
ca3f4e1a7c LV_PROTECT_FOLLOW added to 'line break' to LV_CONT_LAYOUT_PRETTY 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
574033a5ba lv_app_benchmark: skeleton added 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
1eec8e425d lv_refr: solve warnings 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
9af40d76cd lv_refr: comment update 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
f6c459d2d7 lv_refr: refresh time monitor added 2017-07-09 15:40:26 +02:00
Gabor
b4c877c0ea lv_ta: pwd_mode added, lv_label:pwd_mode deleted 2017-07-09 15:40:26 +02:00
Gabor
0087faf3c3 lv_draw_vbasic: upscales img draw optimization 2017-07-09 15:40:26 +02:00
Gabor
f3f7664300 lv_list: lv_list_set_element_text_roll() added 2017-07-09 15:40:26 +02:00
Gabor
712feae198 Hw. accelerator API updated 2017-07-09 15:40:26 +02:00
Gabor
f641b70343 lv_list: label ROLL bugfix 2017-07-09 15:40:26 +02:00
Gabor
643d7ffe36 lv_app_gsm: added 2017-07-09 15:40:26 +02:00
Gabor
c67f558131 follow wifi modifications 2017-07-09 15:40:26 +02:00
Gabor
ac3b7631d0 lv_app_wifi: minor update 2017-07-09 15:40:26 +02:00
Gabor
2774d52043 lv_obj_del: reset the dispi-s only if it is really required 2017-07-09 15:40:26 +02:00
Gabor
08ee1c9736 lv_list: text height bugfix 2017-07-09 15:40:26 +02:00
Gabor
56f266749f Update function calls with LV_IMG_ENABLE_SYMBOLS 1 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
e53dc381c5 lv_label: LV_LABEL_LONG_ROLL addad to scroll the text not the object 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
de8f294244 img. draw bugfix 2017-07-09 15:40:26 +02:00
Kiss-Vamosi Gabor
79b07f8493 lv_mbox set_btn_styles: bugfix if set styles with still no button created 2017-07-09 15:40:25 +02:00
Kiss-Vamosi Gabor
5d29302627 lv_cont pretty layout: bugfix if there is 1 too long object in a row 2017-07-09 15:40:25 +02:00
Kiss-Vamosi Gabor
4b33645805 lv_refr: disable exectuion time monitor by default 2017-07-09 15:40:25 +02:00
Kiss-Vamosi Gabor
86b6cf78e7 Exection time monitor added (printf the result) 2017-07-09 15:40:25 +02:00
Kiss-Vamosi Gabor
91b9bea35b Error check for too small VDB 2017-07-09 15:40:25 +02:00
Kiss-Vamosi Gabor
2b6b3aec91 Draw: make ready to use hw. accelerator 2017-07-09 15:40:25 +02:00
Gabor
752a7aa7b5 ta: lv_ta_get_label() added 2017-07-09 15:40:25 +02:00
Gabor
f931d759bb lv_app_kb MODE_ANIM -> ANIM_IN, ANIM_OUT 2017-07-09 15:40:25 +02:00
Gabor
57453a1f41 label pwd mode added 2017-07-09 15:40:25 +02:00
Gabor
349109a4b5 lv_app_kb: LV_APP_KB_MODE_ANIM added 2017-07-09 15:40:25 +02:00
Gabor
b7445f2346 WiFi app added 2017-07-09 15:40:25 +02:00
Kiss-Vamosi Gabor
f16c78fc9f release v4.1.0 2017-07-09 15:33:27 +02:00
Kiss-Vamosi Gabor
7fab8564d0 header udated with __cplusplus define 2017-07-09 15:32:49 +02:00
Gabor Kiss-Vamosi
a02fb7bf82 Update README.md 2017-07-09 14:39:28 +02:00
Kiss-Vamosi Gabor
8bf03bd7e3 LV_CONT_LAYOUT_PRETTY with LV_PROTECT_FOLLOW bugfix 2017-07-07 23:21:35 +02:00
Kiss-Vamosi Gabor
056d449f89 LV_PROTECT_FOLLOW added to 'line break' to LV_CONT_LAYOUT_PRETTY 2017-07-07 23:02:08 +02:00
Kiss-Vamosi Gabor
889807b449 lv_app_benchmark: skeleton added 2017-07-07 19:38:11 +02:00
Kiss-Vamosi Gabor
2f5d824348 lv_refr: solve warnings 2017-07-07 18:48:45 +02:00
Kiss-Vamosi Gabor
6b711b759c lv_refr: comment update 2017-07-07 18:47:48 +02:00
Kiss-Vamosi Gabor
dcb77a59c7 lv_refr: refresh time monitor added 2017-07-07 18:40:43 +02:00
Gabor
168bda2b8f lv_ta: pwd_mode added, lv_label:pwd_mode deleted 2017-07-07 16:22:24 +02:00
Gabor
119c4b577b lv_draw_vbasic: upscales img draw optimization 2017-06-28 14:28:48 +02:00
Gabor
cf3b94d29b lv_list: lv_list_set_element_text_roll() added 2017-06-27 11:15:18 +02:00
Gabor
678e119d2f Hw. accelerator API updated 2017-06-26 16:20:05 +02:00
Gabor
b82c4c828b lv_list: label ROLL bugfix 2017-06-26 14:22:56 +02:00
Gabor
5fcbdc3e9a lv_app_gsm: added 2017-06-26 14:08:29 +02:00
Gabor
941925a56e follow wifi modifications 2017-06-23 15:14:20 +02:00
Gabor
9ee60404cf lv_app_wifi: minor update 2017-06-21 15:13:08 +02:00
Gabor
662c22b51a lv_obj_del: reset the dispi-s only if it is really required 2017-06-21 10:26:38 +02:00
Gabor
166fa39d89 lv_list: text height bugfix 2017-06-20 15:14:54 +02:00
Gabor
23c559bbb0 Update function calls with LV_IMG_ENABLE_SYMBOLS 1 2017-06-19 12:58:07 +02:00
Kiss-Vamosi Gabor
79e372c2f2 lv_label: LV_LABEL_LONG_ROLL addad to scroll the text not the object 2017-06-18 18:25:25 +02:00
Kiss-Vamosi Gabor
7cd532ae58 img. draw bugfix 2017-06-18 12:49:00 +02:00
Kiss-Vamosi Gabor
3b42e205ad lv_mbox set_btn_styles: bugfix if set styles with still no button created 2017-06-17 20:45:00 +02:00
Kiss-Vamosi Gabor
15b9d8d808 lv_cont pretty layout: bugfix if there is 1 too long object in a row 2017-06-17 20:43:51 +02:00
Kiss-Vamosi Gabor
5e9cf2571d lv_refr: disable exectuion time monitor by default 2017-06-17 09:10:03 +02:00
Kiss-Vamosi Gabor
95b6a2193f Exection time monitor added (printf the result) 2017-06-17 09:08:54 +02:00
Kiss-Vamosi Gabor
a13259d3f9 Error check for too small VDB 2017-06-17 09:08:12 +02:00
Kiss-Vamosi Gabor
c3e9ce73b0 Draw: make ready to use hw. accelerator 2017-06-16 22:30:47 +02:00
Gabor
8fc7c26aa1 ta: lv_ta_get_label() added 2017-06-13 14:49:41 +02:00
Gabor
fbc4551894 lv_app_kb MODE_ANIM -> ANIM_IN, ANIM_OUT 2017-06-13 14:42:44 +02:00
Gabor
06cea6ed3a label pwd mode added 2017-06-13 14:17:33 +02:00
Gabor
26325e5ee6 lv_app_kb: LV_APP_KB_MODE_ANIM added 2017-06-13 11:21:06 +02:00
Gabor
8578c2f1a2 WiFi app added 2017-06-07 12:38:43 +02:00
Gabor Kiss-Vamosi
6b2ff57559 Update README.md 2017-05-15 15:22:03 +02:00
Gabor Kiss-Vamosi
48a227b5ed Update README.md 2017-05-15 15:09:22 +02:00
Gabor Kiss-Vamosi
7ab323cd33 Update README.md 2017-05-15 14:12:42 +02:00
Gabor Kiss-Vamosi
55a5d46fb9 Update README.md 2017-05-15 14:11:12 +02:00
Gabor
f42611d17b release v4.0.0 2017-05-15 09:49:36 +02:00
Gabor
8c35ff3c3b Updates before release 2017-05-15 09:48:48 +02:00
Gabor
91c28e5f44 Merge beta to release v4.0 2017-05-15 09:17:36 +02:00
Gabor
7e65d8e757 Merge branch 'master' of https://github.com/littlevgl/lvgl 2017-05-15 09:17:20 +02:00
Gabor
813a8e5476 Minor updates 2017-05-15 09:15:14 +02:00
Kiss-Vamosi Gabor
50d30e8d88 comments update 2017-05-14 18:49:44 +02:00
Kiss-Vamosi Gabor
cc10990d64 shadow bugfix 2017-05-13 11:03:08 +02:00
Kiss-Vamosi Gabor
20af407203 Minor object updates with some object types 2017-05-13 11:03:08 +02:00
Gabor
da1f4e8e2f minor updates 2017-05-12 16:09:37 +02:00
Gabor
3a9a23b350 minor style updates 2017-05-10 16:12:03 +02:00
Gabor
20f4685541 Solve warnings 2017-05-10 16:11:20 +02:00
Gabor
3f0323192c lv_conf_tmpl update 2017-05-08 11:23:16 +02:00
Gabor
2abc9b214b Minor update 2017-05-08 11:21:33 +02:00
Gabor
1277a805c8 Minor updates 2017-05-08 10:09:47 +02:00
Gabor
6591da5917 minor bugfixes 2017-05-03 15:06:32 +02:00
Gabor
e50be12eca lv_dispi: LV_DISPI_TP_MARKER now set the size of the marker point (0: turn off) 2017-05-03 14:59:36 +02:00
Kiss-Vamosi Gabor
69876763e2 animation: add more control over object animations (e.g. ddlist open/close anim time set by func. instead of define) 2017-05-02 00:16:48 +02:00
Kiss-Vamosi Gabor
c72a16147c lv_app style: minor updates 2017-05-01 22:36:35 +02:00
Kiss-Vamosi Gabor
082eb2dad3 lv_obj: minor updates, typo errors 2017-05-01 18:09:31 +02:00
Gabor
9edaf13c68 minor updates during tests 2017-04-28 16:12:35 +02:00
Gabor
24128ae325 Cleaning the code 2017-04-24 16:16:36 +02:00
Gabor
dadb8973bf shadow draw iprovments 2017-04-24 14:12:32 +02:00
Gabor
d1bec14de8 shadow bottom added 2017-04-24 12:08:24 +02:00
Kiss-Vamosi Gabor
462244684e lv_draw: new shadow drawing algorithm (filter based) introduced 2017-04-23 21:28:24 +02:00
Gabor
373bf2de84 lv_lmeter: added 2017-04-21 17:11:47 +02:00
Gabor
e07abd8ad6 review: bugfixes, minor updates 2017-04-21 09:15:39 +02:00
Gabor
330893ac6a lv_icon: removed, use symbol fonts instead 2017-04-18 10:28:30 +02:00
Gabor
2a1ace1f81 lv_misc moved to misc/gfx 2017-04-18 10:27:59 +02:00
Gabor
d93844bdd8 lv_rect renamed to lv_cont (container) 2017-04-13 16:12:03 +02:00
Gabor
092c0da4b5 updates according to the new style system 2017-04-13 15:57:02 +02:00
Gabor
f431f262be Apply the new style system on the applications too 2017-04-13 13:34:57 +02:00
Gabor
6116e83815 New style system introduced! Still not applied to apps 2017-04-13 10:20:35 +02:00
Gabor
09967f66f2 lv_slider added 2017-04-11 10:51:31 +02:00
Gabor
c4f3838b1e further renames 2017-04-11 10:50:57 +02:00
Gabor
4c14c4c762 BIG UPDTAE: Style renames in the whole library 2017-04-10 11:33:38 +02:00
Gabor
7bb849f4eb solve conflicts 2017-03-27 09:29:47 +02:00
Gabor
ad89961737 lv_ddlist: bugfix with font antialiassing 2017-03-27 09:27:45 +02:00
Gabor
5b7559ea76 Further draw speed optimizations 2017-03-20 10:47:41 +01:00
Kiss-Vamosi Gabor
7f49404d62 LV_FONT_ANTIALIAS added 2017-03-20 07:07:27 +01:00
Gabor Kiss-Vamosi
c26f3b000d Update README.md 2017-03-19 03:33:17 +01:00
Gabor
1696d77516 lv_app_files: sned bugfix (first chunk was not sent) 2017-03-09 14:25:26 +01:00
Gabor
92e63fbb46 Draw speed optimalizations 2017-03-09 11:23:28 +01:00
Gabor
c05ebc075f dispi: if a drag can not move the object (e.g. layout) still consider it as drag (reverted) 2017-03-07 17:13:24 +01:00
Gabor
e98aa0f6e6 Draw speed optimalization 2017-03-07 17:11:39 +01:00
Gabor
48ecbf4f5d lv_obj.h: remove an incorrect include of <sys/types.h> 2017-02-22 10:17:30 +01:00
Gabor
615eceb94b lv_app_visual: skeleton added 2017-02-17 11:31:26 +01:00
Gabor
1cce542cd5 lv_draw: triangle draw added for experimental usage 2017-02-17 11:31:26 +01:00
Kiss-Vamosi Gabor
b5b38ec642 lv_pb: remove phantom bar when set 2017-02-11 20:27:35 +01:00
Gabor
e1fe92ffe7 icon_settigns added 2017-02-06 16:10:47 +01:00
Gabor
ef591b7af1 app conf: app configuration added (terminal, files) 2017-02-06 16:10:47 +01:00
Gabor
a2173ea4fe lv_ddlist: imporvement and bugfixes 2017-02-06 16:10:47 +01:00
Gabor
ca9b423f70 Minor updates after ddlist added 2017-02-06 16:10:47 +01:00
Gabor
5da17ebf50 lv_ddlist: drop down list new object type added 2017-02-06 16:10:47 +01:00
Gabor
6abcbe01cd lv_win: lv_win_close_action bugfix 2017-02-06 16:10:47 +01:00
Gabor
bff43f09a0 anim: template anim_t initilizaton added in anim.h 2017-02-06 16:10:47 +01:00
Gabor
253fbe0ee5 lv_label: lv_label_append_text added 2017-02-06 16:10:47 +01:00
Kiss-Vamosi Gabor
13f75de6ee lv_app_notice: max notice num added 2017-02-03 21:48:13 +01:00
Kiss-Vamosi Gabor
7c77ebe6e5 lv_pb: set default click = false 2017-02-03 21:47:11 +01:00
Kiss-Vamosi Gabor
7f79910092 lv_pb: slider function added 2017-02-03 12:48:22 +01:00
Kiss-Vamosi Gabor
a97d4b6af5 lv_dispi: consider an object dragged only if it is really moved 2017-02-03 12:48:03 +01:00
Gabor
f189307b9c Merge branch 'master' into beta 2017-02-01 11:40:12 +01:00
Gabor
014d0a3842 txt_recolor: text recolor option added, text size function are exteded with a falg paramter 2017-02-01 11:39:48 +01:00
Kiss-Vamosi Gabor
a0c35464ef lv_mbox: mem. usage optimization (create title and btnh only if necessary) 2017-01-17 00:49:16 +01:00
Gabor
2de1f4363c symbols: define the simbols in symbol_def.h instead of font.h 2017-01-16 13:53:39 +01:00
Gabor Kiss-Vamosi
4f3e26b616 Merge pull request #9 from ajaybhargav/font_icon
lv_misc: Add icons as fonts
2017-01-16 13:48:47 +01:00
Gabor Kiss-Vamosi
f47f999480 Merge branch 'master' into font_icon 2017-01-16 13:47:39 +01:00
Ajay Bhargav
ac39928a01 lv_misc: Move SYMBOL definition to font.h for easy access
Signed-off-by: Ajay Bhargav <contact@rickeyworld.info>
2017-01-13 10:34:19 +05:30
Ajay Bhargav
ba093a8d80 lv_misc: Add new font FONT_SYMBOL_60 of size 60px
New font added with similar symbol to that of symbol_30 but of double
height.

Signed-off-by: Ajay Bhargav <contact@rickeyworld.info>
2017-01-13 10:29:12 +05:30
Ajay Bhargav
215da26097 lv_misc: Rename FONT_ICONS to FONT_SYMBOL_30
Define USE_FONT_SYMBOL_30 to enable symbol fonts of 30px.

FONT_ICONS renamed to FONT_SYMBOL_30

Signed-off-by: Ajay Bhargav <contact@rickeyworld.info>
2017-01-13 10:19:40 +05:30
Ajay Bhargav
510e8b8992 lv_misc: Add icons as fonts
Using icons as font uses less space. Font size is 30px.

Signed-off-by: Ajay Bhargav <contact@rickeyworld.info>
2017-01-09 13:16:36 +05:30
318 changed files with 88529 additions and 88037 deletions

97
.clang-format Normal file
View File

@@ -0,0 +1,97 @@
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: false
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: true
AfterUnion: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: false
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '$'
IndentCaseLabels: true
IndentWidth: 4
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Middle
ReflowComments: true
SortIncludes: false
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: Never
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
...

7
.editorconfig Normal file
View File

@@ -0,0 +1,7 @@
[*.{c,h}]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
custom: ["https://littlevgl.com/donate"]

View File

@@ -0,0 +1,14 @@
---
name: All other issues
about: Questions and enhancement requests should go to the forum.
title: ''
labels: not-template
assignees: ''
---
# All enhancement requests or questions should be directed to the Forum.
We use GitHub issues for development related discussions.
Please use the [forum](https://forum.littlevgl.com/) to ask questions.

29
.github/ISSUE_TEMPLATE/bug-report.md vendored Normal file
View File

@@ -0,0 +1,29 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
> # Important: issues that don't use this template will be ignored/closed.
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Please provide a small, independent code sample that can be used to reproduce the issue. Ideally this should work in the PC simulator unless the problem is specific to one platform.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.

17
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 21
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- architecture
- pinned
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue or pull request has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
**/*.o
**/*.swp
**/*.swo
tags
docs/api_doc

0
.gitmodules vendored Normal file
View File

398
README.md
View File

@@ -1,16 +1,398 @@
# LittleV Graphical Libraray Core
<h1 align="center"> LittlevGL - Open-source Embedded GUI Library</h1>
<p align="center">
<a href="https://github.com/littlevgl/lvgl/blob/master/LICENCE.txt"><img src="https://img.shields.io/badge/licence-MIT-blue.svg"></a>
<a href="https://github.com/littlevgl/lvgl/releases/tag/v6.0"><img src="https://img.shields.io/badge/version-6.0-blue.svg"></a>
</p>
LittleV Graphical Library is C written software libraray which helps you to add modern and innovative graphical user interface to your embedded application.
<p align="center">
<img src="https://littlevgl.com/github/cover_ori_reduced_2.gif">
</p>
The library supports high level graphical effects, like anialaiasing, opacity, color fade etc.
<p align="center">
LittlevGL provides everything you need to create a Graphical User Interface (GUI) on embedded systems with easy-to-use graphical elements, beautiful visual effects and low memory footprint.
</p>
The GUI can be built from simle objects like screens, buttons labels, images etc.
<h4 align="center">
<a href="https://littlevgl.com">Website </a> &middot;
<a href="https://littlevgl.com/live-demo">Live demo</a> &middot;
<a href="https://docs.littlevgl.com/en/html/get-started/pc-simulator.html">Simulator</a> &middot;
<a href="https://forum.littlevgl.com">Forum</a> &middot;
<a href="https://docs.littlevgl.com/">Docs</a> &middot;
<a href="https://blog.littlevgl.com/">Blog</a>
</h4>
The "misc" modul is required to use use the library. (https://github.com/littlevgl/misc)
---
Check littlev.hu for more information!
There are two branches: master and beta. In beta you will find the newest features which are not released yet.
- [Features](#features)
- [Supported devices](#supported-devices)
- [Quick start in a simulator](#quick-start-in-a-simulator)
- [Add LittlevGL to your project](#add-littlevgl-to-your-project)
- [Learn the basics](#learn-the-basics)
- [Examples](#examples)
- [Contributing](#contributing)
- [Donate](#donate)
## Features
* **Powerful building blocks** buttons, charts, lists, sliders, images, etc.
* **Advanced graphics** with animations, anti-aliasing, opacity, smooth scrolling
* **Simultaneously use various input devices** touchscreen, mouse, keyboard, encoder, buttons, etc.
* **Simultaneously use multiple displays** i.e. monochrome and color display
* **Multi-language support** with UTF-8 encoding
* **Fully customizable** graphical elements
* **Hardware independent** to use with any microcontroller or display
* **Scalable** to operate with little memory (64 kB Flash, 10 kB RAM)
* **OS, External memory and GPU** supported but not required
* **Single frame buffer** operation even with advances graphical effects
* **Written in C** for maximal compatibility
* **Micropython Binding** exposes [LittlevGL API in Micropython](https://blog.littlevgl.com/2019-02-20/micropython-bindings)
* **Simulator** to develop on PC without embedded hardware
* **Tutorials, examples, themes** for rapid development
* **Documentation** and API references
## Supported devices
Basically, every modern controller - which is able to drive a display - is suitable to run LittlevGL. The minimal requirements:
- 16, 32 or 64 bit microcontroller or processor
- &gt; 16 MHz clock speed is recommended
- Flash/ROM: &gt; 64 kB for the very essential components (&gt; 180 kB is recommended)
- RAM:
- Static RAM usage: ~8..16 kB depending on the used features and objects types
- Stack: &gt; 2kB (&gt; 4 kB is recommended)
- Dynamic data (heap): &gt; 4 KB (&gt; 16 kB is recommended if using several objects).
Set by `LV_MEM_SIZE` in *lv_conf.h*.
- Display buffer: &gt; *"Horizontal resolution"* pixels (&gt; 10 &times; *"Horizontal resolution"* is recommended)
- C99 or newer compiler
*Note that the memory usage might vary depending on the architecture, compiler and build options.*
Just to mention some **platforms**:
- STM32F1, STM32F3, [STM32F4](https://blog.littlevgl.com/2017-07-15/stm32f429_disco_port), [STM32F7](https://github.com/littlevgl/stm32f746_disco_no_os_sw4stm32)
- Microchip dsPIC33, PIC24, PIC32MX, PIC32MZ
- NXP Kinetis, LPC, iMX
- [Linux frame buffer](https://blog.littlevgl.com/2018-01-03/linux_fb) (/dev/fb)
- [Raspberry PI](http://www.vk3erw.com/index.php/16-software/63-raspberry-pi-official-7-touchscreen-and-littlevgl)
- [Espressif ESP32](https://github.com/littlevgl/esp32_ili9431)
- Nordic nrf52
- Quectell M66
## Quick start in a simulator
The easiest way to get started with LittlevGL is to run it in a simulator on your PC without any embedded hardware.
Choose a project with your favourite IDE:
| Eclipse | CodeBlocks | Visual Studio | PlatformIO | Qt Creator |
|-------------|-------------|---------------|-----------|------------|
| [![Eclipse](https://littlevgl.com/logo/ide/eclipse.jpg)](https://github.com/littlevgl/pc_simulator_sdl_eclipse) | [![CodeBlocks](https://littlevgl.com/logo/ide/codeblocks.jpg)](https://github.com/littlevgl/pc_simulator_win_codeblocks) | [![VisualStudio](https://littlevgl.com/logo/ide/visualstudio.jpg)](https://github.com/littlevgl/visual_studio_2017_sdl_x64) | [![PlatformIO](https://littlevgl.com/logo/ide/platformio.jpg)](https://github.com/littlevgl/pc_simulator_sdl_platformio) | [![QtCreator](https://littlevgl.com/logo/ide/qtcreator.jpg)](https://blog.littlevgl.com/2019-01-03/qt-creator) |
| Cross-platform<br>with SDL<br>(Recommended on<br>Linux and Mac) | Native Windows | Windows<br>with SDL | Cross-platform<br>with SDL | Cross-platform<br>with SDL |
## Add LittlevGL to your project
The steps below show how to setup LittlevGL on an embedded system with a display and a touchpad.
You can use the [Simulators](https://docs.littlevgl.com/en/html/get-started/pc-simulator) to get ready to use projects which can be run on your PC.
1. [Download](https://littlevgl.com/download) or [Clone](https://github.com/littlevgl/lvgl) the library
2. Copy the `lvgl` folder into your project
3. Copy `lvgl/lv_conf_template.h` as `lv_conf.h` next to the `lvgl` folder and set at least `LV_HOR_RES_MAX`, `LV_VER_RES_MAX` and `LV_COLOR_DEPTH`.
4. Include `lvgl/lvgl.h` where you need to use LittlevGL related functions.
5. Call `lv_tick_inc(x)` every `x` milliseconds **in a Timer or Task** (`x` should be between 1 and 10). It is required for the internal timing of LittlevGL.
6. Call `lv_init()`
7. Create a display buffer for LittlevGL
```c
static lv_disp_buf_t disp_buf;
static lv_color_t buf[LV_HOR_RES_MAX * 10]; /*Declare a buffer for 10 lines*/
lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/
```
8. Implement and register a function which can **copy a pixel array** to an area of your display:
```c
lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/
lv_disp_drv_init(&disp_drv); /*Basic initialization*/
disp_drv.flush_cb = my_disp_flush; /*Set your driver function*/
disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/
lv_disp_drv_register(&disp_drv); /*Finally register the driver*/
void my_disp_flush(lv_disp_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
int32_t x, y;
for(y = area->y1; y <= area->y2; y++) {
for(x = area->x1; x <= area->x2; x++) {
set_pixel(x, y, *color_p); /* Put a pixel to the display.*/
color_p++;
}
}
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/
}
```
9. Implement and register a function which can **read an input device**. E.g. for a touch pad:
```c
lv_indev_drv_init(&indev_drv); /*Descriptor of a input device driver*/
indev_drv.type = LV_INDEV_TYPE_POINTER; /*Touch pad is a pointer-like device*/
indev_drv.read_cb = my_touchpad_read; /*Set your driver function*/
lv_indev_drv_register(&indev_drv); /*Finally register the driver*/
bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data)
{
static lv_coord_t last_x = 0;
static lv_coord_t last_y = 0;
/*Save the state and save the pressed coordinate*/
data->state = touchpad_is_pressed() ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
if(data->state == LV_INDEV_STATE_PR) touchpad_get_xy(&last_x, &last_y);
/*Set the coordinates (if released use the last pressed coordinates)*/
data->point.x = last_x;
data->point.y = last_y;
return false; /*Return `false` because we are not buffering and no more data to read*/
}
```
10. Call `lv_task_handler()` periodically every few milliseconds in the main `while(1)` loop, in Timer interrupt or in an Operation system task.
It will redraw the screen if required, handle input devices etc.
## Learn the basics
### Objects (Widgets)
The graphical elements like Buttons, Labels, Sliders, Charts etc are called objects in LittelvGL. Go to [Object types](https://docs.littlevgl.com/en/html/object-types/index) to see the full list of available types.
Every object has a parent object. The child object moves with the parent and if you delete the parent the children will be deleted too. Children can be visible only on their parent.
The *screen* are the "root" parents. To get the current screen call `lv_scr_act()`.
You can create a new object with `lv_<type>_create(parent, obj_to_copy)`. It will return an `lv_obj_t *` variable which should be used as a reference to the object to set its parameters.
The first parameter is the desired *parent*, te second parameters can be an object to copy (`NULL` is unused).
For example:
```c
lv_obj_t * slider1 = lv_slider_create(lv_scr_act(), NULL);
```
To set some basic attribute `lv_obj_set_<paramters_name>(obj, <value>)` function can be used. For example:
```c
lv_obj_set_x(btn1, 30);
lv_obj_set_y(btn1, 10);
lv_obj_set_size(btn1, 200, 50);
```
The objects has type specific parameters too which can be set by `lv_<type>_set_<paramters_name>(obj, <value>)` functions. For example:
```c
lv_slider_set_value(slider1, 70, LV_ANIM_ON);
```
To see the full API visit the documentation of the object types or the related header file (e.g. `lvgl/src/lv_objx/lv_slider.h`).
### Styles
Styles can be assigned to the objects to changed their appearance. A style describes the appearance of rectangle-like objects (like a button or slider), texts, images and lines at once.
You can create a new style like this:
```c
static lv_style_t style1; /*Declare a new style. Should be `static`*/
lv_style_copy(&style1, &lv_style_plain); /*Copy a built-in style*/
style1.body.main_color = LV_COLOR_RED; /*Main color*/
style1.body.grad_color = lv_color_hex(0xffd83c) /*Gradient color (orange)*/
style1.body.radius = 3;
style1.text.color = lv_color_hex3(0x0F0) /*Label color (green)*/
style1.text.font = &lv_font_dejavu_22; /*Change font*/
...
```
To set a new style for an object use the `lv_<type>set_style(obj, LV_<TYPE>_STYLE_<NAME>, &my_style)` functions. For example:
```c
lv_slider_set_style(slider1, LV_SLIDER_STYLE_BG, &slider_bg_style);
lv_slider_set_style(slider1, LV_SLIDER_STYLE_INDIC, &slider_indic_style);
lv_slider_set_style(slider1, LV_SLIDER_STYLE_KNOB, &slider_knob_style);
```
If an object's style is `NULL` then it will inherit its parent's style. For example, the labels' style are `NULL` by default. If you place them on a button then they will use the `style.text` properties from the button's style.
Learn more in [Style overview](https://docs.littlevgl.com/en/html/overview/style) section.
### Events
Events are used to inform the user if something has happened with an object. You can assign a callback to an object which will be called if the object is clicked, released, dragged, being deleted etc. It should look like this:
```c
lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to the button*/
...
void btn_event_cb(lv_obj_t * btn, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
printf("Clicked\n");
}
}
```
Learn more about the events in the [Event overview](https://docs.littlevgl.com/en/html/overview/event) section.
## Examples
### Button with label
```c
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL); /*Add a button the current screen*/
lv_obj_set_pos(btn, 10, 10); /*Set its position*/
lv_obj_set_size(btn, 100, 50); /*Set its size*/
lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to the button*/
lv_obj_t * label = lv_label_create(btn, NULL); /*Add a label to the button*/
lv_label_set_text(label, "Button"); /*Set the labels text*/
...
void btn_event_cb(lv_obj_t * btn, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
printf("Clicked\n");
}
}
```
![LittlevGL button with label example](https://docs.littlevgl.com/en/misc/simple_button_example.gif)
### Button with styles
Add styles to the previously button from the previous example
```c
static lv_style_t style_btn_rel; /*A variable to store the released style*/
lv_style_copy(&style_btn_rel, &lv_style_plain); /*Initialize from a built-in style*/
style_btn_rel.body.border.color = lv_color_hex3(0x269);
style_btn_rel.body.border.width = 1;
style_btn_rel.body.main_color = lv_color_hex3(0xADF);
style_btn_rel.body.grad_color = lv_color_hex3(0x46B);
style_btn_rel.body.shadow.width = 4;
style_btn_rel.body.shadow.type = LV_SHADOW_BOTTOM;
style_btn_rel.body.radius = LV_RADIUS_CIRCLE;
style_btn_rel.text.color = lv_color_hex3(0xDEF);
static lv_style_t style_btn_pr; /*A variable to store the pressed style*/
lv_style_copy(&style_btn_pr, &style_btn_rel); /*Initialize from the released style*/
style_btn_pr.body.border.color = lv_color_hex3(0x46B);
style_btn_pr.body.main_color = lv_color_hex3(0x8BD);
style_btn_pr.body.grad_color = lv_color_hex3(0x24A);
style_btn_pr.body.shadow.width = 2;
style_btn_pr.text.color = lv_color_hex3(0xBCD);
lv_btn_set_style(btn, LV_BTN_STYLE_REL, &style_btn_rel); /*Set the button's released style*/
lv_btn_set_style(btn, LV_BTN_STYLE_PR, &style_btn_pr); /*Set the button's pressed style*/
```
![Stylsd button is LittelvGL](https://docs.littlevgl.com/en/misc/button_style_example.gif)
### Slider and object alignment
```c
lv_obj_t * label;
...
/* Create a slider in the center of the display */
lv_obj_t * slider = lv_slider_create(lv_scr_act(), NULL);
lv_obj_set_width(slider, 200); /*Set the width*/
lv_obj_align(slider, NULL, LV_ALIGN_CENTER, 0, 0); /*Align to the center of the parent (screen)*/
lv_obj_set_event_cb(slider, slider_event_cb); /*Assign an event function*/
/* Create a label below the slider */
label = lv_label_create(lv_scr_act(), NULL);
lv_label_set_text(label, "0");
lv_obj_set_auto_realign(slider, true);
lv_obj_align(label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
...
void slider_event_cb(lv_obj_t * slider, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
static char buf[4]; /* max 3 bytes for number plus 1 null terminating byte */
snprintf(buf, 4, "%u", lv_slider_get_value(slider));
lv_label_set_text(slider_label, buf); /*Refresh the text*/
}
}
```
![Slider example with LittlevGL](https://docs.littlevgl.com/en/misc/slider_example.gif)
### List and themes
```c
/*Texts of the list elements*/
const char * txts[] = {"First", "Second", "Third", "Forth", "Fifth", "Sixth", NULL};
/* Initialize and set a theme. `LV_THEME_NIGHT` needs to enabled in lv_conf.h. */
lv_theme_t * th = lv_theme_night_init(20, NULL);
lv_theme_set_current(th);
/*Create a list*/
lv_obj_t* list = lv_list_create(lv_scr_act(), NULL);
lv_obj_set_size(list, 120, 180);
lv_obj_set_pos(list, 10, 10);
/*Add buttons*/
uint8_t i;
for(i = 0; txts[i]; i++) {
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_FILE, txts[i]);
lv_obj_set_event_cb(btn, list_event); /*Assign event function*/
lv_btn_set_toggle(btn, true); /*Enable on/off states*/
}
/* Initialize and set an other theme. `LV_THEME_MATERIAL` needs to enabled in lv_conf.h.
* If `LV_TEHE_LIVE_UPDATE 1` then the previous list's style will be updated too.*/
th = lv_theme_material_init(210, NULL);
lv_theme_set_current(th);
/*Create an other list*/
list = lv_list_create(lv_scr_act(), NULL);
lv_obj_set_size(list, 120, 180);
lv_obj_set_pos(list, 150, 10);
/*Add buttons with the same texts*/
for(i = 0; txts[i]; i++) {
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_FILE, txts[i]);
lv_obj_set_event_cb(btn, list_event);
lv_btn_set_toggle(btn, true);
}
...
static void list_event(lv_obj_t * btn, lv_event_t e)
{
if(e == LV_EVENT_CLICKED) {
printf("%s\n", lv_list_get_btn_text(btn));
}
}
```
![List and theme example with LittlevGL](https://docs.littlevgl.com/en/misc/list_theme_example.gif)
### Use LittlevGL from Micropython
Learn more about [Micropython](https://docs.littlevgl.com/en/html/get-started/micropython).
```python
# Create a Button and a Label
scr = lv.obj()
btn = lv.btn(scr)
btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn)
label.set_text("Button")
# Load the screen
lv.scr_load(scr)
```
## Contributing
To ask questions please use the [Forum](https://forum.littlevgl.com).
For development-related things (bug reports, feature suggestions) use [GitHub's Issue tracker](https://github.com/littlevgl/lvgl/issues).
If you are interested in contributing to LittlevGL you can
- **Help others** in the [Forum](https://forum.littlevgl.com).
- **Inspire people** by speaking about your project in [My project](https://forum.littlevgl.com/c/my-projects) category in the Forum or add it to the [References](https://blog.littlevgl.com/2018-12-26/references) post
- **Improve and/or translate the documentation.** Go to the [Documentation](https://github.com/littlevgl/docs) repository to learn more
- **Write a blog post** about your experiences. See how to do it in the [Blog](https://github.com/littlevgl/blog) repository
- **Report and/or fix bugs** in [GitHub's issue tracker](https://github.com/littlevgl/lvgl/issues)
- **Help in the developement**. Check the [Open issues](https://github.com/littlevgl/lvgl/issues) especially the ones with [Help wanted](https://github.com/littlevgl/lvgl/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) label and tell your ideas about a topic or implement a feature.
It should be useful to read the
- [Contributing guide](https://blog.littlevgl.com/2018-12-06/contributing)
- [Coding style guide](https://github.com/littlevgl/lvgl/blob/master/docs/CODING_STYLE.md)
## Donate
If you are pleased with the library, found it useful, or you are happy with the support you got, please help its further development:
[![Donate](https://littlevgl.com/donate_dir/donate_btn.png)](https://littlevgl.com/donate)

46
docs/CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [atom@github.com](mailto:atom@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/

94
docs/CODING_STYLE.md Normal file
View File

@@ -0,0 +1,94 @@
## File format
Use [lv_misc/lv_templ.c](https://github.com/littlevgl/lvgl/blob/master/src/lv_misc/lv_templ.c) and [lv_misc/lv_templ.h](https://github.com/littlevgl/lvgl/blob/master/src/lv_misc/lv_templ.h)
## Naming conventions
* Words are separated by '_'
* In variable and function names use only lower case letters (e.g. *height_tmp*)
* In enums and defines use only upper case letters (e.g. *e.g. MAX_LINE_NUM*)
* Global names (API):
* starts with *lv*
* followed by module name: *btn*, *label*, *style* etc.
* followed by the action (for functions): *set*, *get*, *refr* etc.
* closed with the subject: *name*, *size*, *state* etc.
* Typedefs
* prefer `typedef struct` and `typedef enum` instead of `struct name` and `enum name`
* always end `typedef struct` and `typedef enum` type names with `_t`
* Abbreviations:
* Use abbreviations on public names only if they become longer than 32 characters
* Use only very straightforward (e.g. pos: position) or well-established (e.g. pr: press) abbreviations
## Coding guide
* Functions:
* Try to write function shorter than is 50 lines
* Always shorter than 100 lines (except very straightforwards)
* Variables:
* One line, one declaration (BAD: char x, y;)
* Use `<stdint.h>` (*uint8_t*, *int32_t* etc)
* Declare variables when needed (not all at function start)
* Use the smallest required scope
* Variables in a file (outside functions) are always *static*
* Do not use global variables (use functions to set/get static variables)
## Comments
Before every function have a comment like this:
```c
/**
* Return with the screen of an object
* @param obj pointer to an object
* @return pointer to a screen
*/
lv_obj_t * lv_obj_get_scr(lv_obj_t * obj);
```
Always use `/* Something */` format and NOT `//Something`
Write readable code to avoid descriptive comments like:
`x++; /* Add 1 to x */`.
The code should show clearly what you are doing.
You should write **why** have you done this:
`x++; /*Because of closing '\0' of the string */`
Short "code summaries" of a few lines are accepted. E.g. `/*Calculate the new coordinates*/`
In comments use \` \` when referring to a variable. E.g. ``/*Update the value of `x_act`*/``
### Formatting
Here is example to show bracket placing and using of white spaces:
```c
/**
* Set a new text for a label. Memory will be allocated to store the text by the label.
* @param label pointer to a label object
* @param text '\0' terminated character string. NULL to refresh with the current text.
*/
void lv_label_set_text(lv_obj_t * label, const char * text)
{ /* Main brackets of functions in new line*/
if(label == NULL) return; /*No bracket only if the command is inline with the if statement*/
lv_obj_inv(label);
lv_label_ext_t * ext = lv_obj_get_ext(label);
/*Comment before a section */
if(text == ext->txt || text == NULL) { /*Bracket of statements start inline*/
lv_label_refr_text(label);
return;
}
...
}
```
Use 4 spaces indentation instead of tab.
You can use **astyle** to format the code. The required config flies are: `docs/astyle_c` and `docs/astyle_h`.
To format the source files:
`$ find . -type f -name "*.c" | xargs astyle --options=docs/astyle_c`
To format the header files:
`$ find . -type f -name "*.h" | xargs astyle --options=docs/astyle_h`
Append `-n` to the end to skip creation of backup file OR use `$ find . -type f -name "*.bak" -delete` (for source file's backups) and `find . -type f -name "*.orig" -delete` (for header file's backups)

111
docs/CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,111 @@
# Contributing to Littlev Graphics Library
**Do you have some free time to spend with programming?
Are you working on an Embedded GUI project with LittlevGL?
See how can you help to improve the graphics library!**
There are many ways to join the community. If you have some time to work with us I'm sure you will find something that fits you! You can:
- help others in the [Forum](https://forum.littlevgl.com/)
- improve and/or translate the documentation
- write a blog post about your experiences
- report and/or fix bugs
- suggest and/or implement new features
But first, start with the most Frequently Asked Questions.
# FAQ about contributing
## Where can I write my question and remarks?
We use the [Forum](https://forum.littlevgl.com/) to ask and answer questions and [GitHub's issue tracker](https://github.com/littlevgl/lvgl/issues) for development-related discussion.
But there are some simple rules:
- Be kind and friendly.
- Speak about one thing in one issue/topic.
- Give feedback and close the issue or mark the topic as solved if your question is answered.
- Tell what you experience or expect. _"The button is not working"_ is not enough info to get help.
- If possible send an absolute minimal code example in order to reproduce the issue
- Use [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) to format your post.
## How can I send fixes and improvements?
Merging new code happens via Pull Requests. If you are still not familiar with the Pull Requests (PR for short) here is a quick guide:
1. **Fork** the [lvgl repository](https://github.com/littlevgl/lvgl). To do this click the "Fork" button in the top right corner. It will "copy" the `lvgl` repository to your GitHub account (`https://github.com/your_name?tab=repositories`)
2. **Clone** the forked repository and add your changes
3. **Create a PR** on GitHub from the page of your `lvgl` repository (`https://github.com/your_name/lvgl`) by hitting the "New pull request" button
4. **Set the base branch**. It means where you want to merge your update. Fixes go to `master`, new features to the actual `dev-x.y` branch.
5. **Describe** what is in the update. An example code is welcome if applicable.
Some advice:
- If you are not sure about your fix or feature it's better to open an issue first and discuss the details there.
- Maybe your fix or update won't be perfect at first. Don't be afraid, just improve it and push the new commits. The PR will be updated accordingly.
- If your update needs some extra work it's okay to say: _"I'm busy now and I will improve it soon"_ or _"Sorry, I don't have time to improve it, I hope it helps in this form too"_.
So it's better to say don't have time to continue than saying nothing.
- Please read and follow this [guide about the coding style](https://github.com/littlevgl/lvgl/blob/master/docs/CODING_STYLE.md)
## Where is the documentation?
You can read the documentation here: <https://docs.littlevgl.com/>
You can edit the documentation here: <https://github.com/littlevgl/doc>
## Where is the blog?
You can read the blog here: <https://blog.littlevgl.com/>
You can edit the blog here: <https://github.com/littlevgl/blog>
# So how and where can you contribute?
## Help others in the Forum
It's a great way to contribute to the library if you already use it.
Just go to [https://forum.littlevgl.com/](https://forum.littlevgl.com/) a register (Google and GitHub login also works).
Log in, read the titles and if you are already familiar with a topic, don't be shy, and write your suggestion.
## Improving and/or translating the documentation
If you would like to contribute to LittlevGL the documentation is the best place to start.
### Fix typos, add missing parts
If you find a typo, an obscure sentence or something which is not explained well enough in the [English documentation](https://docs.littlevgl.com/en/html/index.html)
click the *"Edit on GitHub"* button in the top right corner and fix the issue by sending a Pull Request.
### Translate the documentation
If you have time and interest you can translate the documentation to your native language or any language you speak.
You can join others to work on an already existing language or you can start a new one.
To translate the documentation we use [Zanata](https://zanata.org) which is an online translation platform.
You will find the LittlevGL project here: [LittlevGL on Zanata](https://translate.zanata.org/iteration/view/littlevgl-docs/v6.0-doc1?dswid=3430)
To get started you need to:
- register at [Zanata](https://zanata.org) which is an online translation platform.
- comment to [this post](https://forum.littlevgl.com/t/translate-the-documentation/238?u=kisvegabor)
- tell your username at *Zanata* and your selected language(s) to get permission the edit the translations
Note that a translation will be added to the documentation only if at least the [Porting section](https://docs.littlevgl.com/en/html/porting/index.html) is translated.
## Writing a blog post about your experiences
Have you ported LittlevGL to a new platform? Have you created a fancy GUI? Do you know a great trick?
You can share your knowledge on LittlevGL's blog! It's super easy to add your own post:
- Fork and clone the [blog repository](https://github.com/littlevgl/blog)
- Add your post in Markdown to the `_posts` folder.
- Store the images and other resources in a dedicated folder in `assets`
- Create a Pull Request
The blog uses [Jekyll](https://jekyllrb.com/) to convert the `.md` files to a webpage. You can easily [run Jekyll offline](https://jekyllrb.com/docs/) to check your post before creating the Pull request
## Reporting and/or fixing bugs
For simple bugfixes (typos, missing error handling, fixing a warning) is fine to send a Pull request directly. However, for more complex bugs it's better to open an issue first. In the issue, you should describe how to reproduce the bug and even add the minimal code snippet.
## Suggesting and/or implementing new features
If you have a good idea don't hesitate to share with us. It's even better if you have time to deal with its implementation. Don't be afraid if you still don't know LittlevGL well enough. We will help you to get started.
During the implementation don't forget the [Code style guide](https://github.com/littlevgl/lvgl/blob/master/docs/CODING_STYLE.md).
# Summary
I hope you have taken a liking to contribute to LittlevGL. A helpful and friendly community is waiting for you! :)

View File

@@ -1,41 +0,0 @@
/**
* @file img_conf.h
*
*/
#if 0 /*Remove this to enable the content (Delete the last #endif too!)*/
#ifndef IMG_CONF_H
#define IMG_CONF_H
/*********************
* INCLUDES
*********************/
/*********************
* DEFINES
*********************/
/* Enable here the used images
* For example:
* #define USE_IMG_EXAMPLE 1
*
* This is compatible with the images
* generated by the image converter utility
* For more information see: www.littlev.hu */
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**********************
* MACROS
**********************/
#endif
#endif /*Remove this to enable the content*/

14
library.json Normal file
View File

@@ -0,0 +1,14 @@
{
"name": "lvgl",
"version": "6.0.2",
"keywords": "graphics, gui, embedded, littlevgl",
"description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.",
"repository":
{
"type": "git",
"url": "https://github.com/littlevgl/lvgl.git"
},
"build": {
"includeDir": "."
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,235 +0,0 @@
/**
* @file lv_app.h
*
*/
#ifndef LV_APP_H
#define LV_APP_H
/*********************
* INCLUDES
*********************/
#include "lvgl/lvgl.h"
#if LV_APP_ENABLE != 0
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef enum
{
LV_APP_MODE_NONE = 0x0000,
LV_APP_MODE_NOT_LIST = 0x0001, /*Do not list the application*/
LV_APP_MODE_NO_SC_TITLE = 0x0002, /*No short cut title*/
}lv_app_mode_t;
typedef enum
{
LV_APP_COM_TYPE_CHAR, /*Stream of characters. Always '\0' terminated*/
LV_APP_COM_TYPE_INT, /*Stream of 'int32_t' numbers*/
LV_APP_COM_TYPE_LOG, /*String about an event to log*/
LV_APP_COM_TYPE_TRIG, /*A trigger to do some specific action (data is ignored)*/
LV_APP_COM_TYPE_INV, /*Invalid type*/
LV_APP_COM_TYPE_NUM, /*Indicates the number of com. types*/
}lv_app_com_type_t;
struct __LV_APP_DSC_T;
typedef struct
{
const struct __LV_APP_DSC_T * dsc;
char * name;
lv_obj_t * sc;
lv_obj_t * sc_title;
lv_obj_t * win;
void * app_data;
void * sc_data;
void * win_data;
}lv_app_inst_t;
typedef struct __LV_APP_DSC_T
{
const char * name;
lv_app_mode_t mode;
void (*app_run)(lv_app_inst_t *, void *);
void (*app_close) (lv_app_inst_t *);
void (*com_rec) (lv_app_inst_t *, lv_app_inst_t *, lv_app_com_type_t, const void *, uint32_t);
void (*sc_open) (lv_app_inst_t *, lv_obj_t *);
void (*sc_close) (lv_app_inst_t *);
void (*win_open) (lv_app_inst_t *, lv_obj_t *);
void (*win_close) (lv_app_inst_t *);
uint16_t app_data_size;
uint16_t sc_data_size;
uint16_t win_data_size;
}lv_app_dsc_t;
typedef struct {
lv_rects_t menu_style;
lv_btns_t menu_btn_style;
lv_labels_t menu_btn_label_style;
lv_imgs_t menu_btn_img_style;
lv_lists_t app_list_style;
lv_pages_t sc_page_style;
lv_labels_t win_txt_style;
lv_wins_t win_style;
lv_btns_t sc_style;
lv_btns_t sc_send_style;
lv_btns_t sc_rec_style;
lv_labels_t sc_title_style;
lv_labels_t sc_txt_style;
opa_t menu_opa;
opa_t menu_btn_opa;
opa_t sc_opa;
cord_t menu_h;
cord_t app_list_w;
cord_t app_list_h;
cord_t sc_title_margin;
/*Calculated values, do not set them!*/
cord_t win_useful_w;
cord_t win_useful_h;
}lv_app_style_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initialize the application system
*/
void lv_app_init(void);
/**
* Run an application according to 'app_dsc'
* @param app_dsc pointer to an application descriptor
* @param conf pointer to an application specific configuration structure or NULL if unused
* @return pointer to the opened application or NULL if any error occurred
*/
lv_app_inst_t * lv_app_run(const lv_app_dsc_t * app_dsc, void * conf);
/**
* Close a running application. Close the Window and the Shortcut too if opened.
* @param app pointer to an application
*/
void lv_app_close(lv_app_inst_t * app);
/**
* Open a shortcut for an application
* @param app pointer to an application
* @return pointer to the shortcut
*/
lv_obj_t * lv_app_sc_open(lv_app_inst_t * app);
/**
* Close the shortcut of an application
* @param app pointer to an application
*/
void lv_app_sc_close(lv_app_inst_t * app);
/**
* Open the application in a window
* @param app pointer to an application
* @return pointer to the shortcut
*/
lv_obj_t * lv_app_win_open(lv_app_inst_t * app);
/**
* Close the window of an application
* @param app pointer to an application
*/
void lv_app_win_close(lv_app_inst_t * app);
/**
* Send data to other applications
* @param app_send pointer to the application which is sending the message
* @param type type of data from 'lv_app_com_type_t' enum
* @param data pointer to the sent data
* @param size length of 'data' in bytes
* @return number application which were received the message
*/
uint16_t lv_app_com_send(lv_app_inst_t * app_send, lv_app_com_type_t type , const void * data, uint32_t size);
/**
* Test an application communication connection
* @param sender pointer to an application which sends data
* @param receiver pointer to an application which receives data
* @return false: no connection, true: there is connection
*/
bool lv_app_con_check(lv_app_inst_t * sender, lv_app_inst_t * receiver);
/**
* Create a new connection between two applications
* @param sender pointer to a data sender application
* @param receiver pointer to a data receiver application
*/
void lv_app_con_set(lv_app_inst_t * sender, lv_app_inst_t * receiver);
/**
* Delete a communication connection
* @param sender pointer to a data sender application or NULL to be true for all sender
* @param receiver pointer to a data receiver application or NULL to be true for all receiver
*/
void lv_app_con_del(lv_app_inst_t * sender, lv_app_inst_t * receiver);
/**
* Get the application descriptor from its name
* @param name name of the app. dsc.
* @return pointer to the app. dsc.
*/
const lv_app_dsc_t * lv_app_dsc_get(const char * name);
/**
* Rename an application
* @param app pointer to an application
* @param name a string with the new name
*/
void lv_app_rename(lv_app_inst_t * app, const char * name);
/**
* Get the window object from an object located on the window
* @param obj pointer to an object on the window
* @return pointer to the window of 'obj'
*/
lv_obj_t * lv_app_win_get_from_obj(lv_obj_t * obj);
/**
* Read the list of the running applications. (Get he next element)
* @param prev the previous application (at the first call give NULL to get the first application)
* @param dsc pointer to an application descriptor to filer the applications (NULL to do not filter)
* @return pointer to the next running application or NULL if no more
*/
lv_app_inst_t * lv_app_get_next(lv_app_inst_t * prev, lv_app_dsc_t * dsc);
/**
* Read the list of applications descriptors. (Get he next element)
* @param prev the previous application descriptors(at the first call give NULL to get the first)
* @return pointer to the next application descriptors or NULL if no more
*/
lv_app_dsc_t ** lv_app_dsc_get_next(lv_app_dsc_t ** prev);
/**
* Refresh the style of the applications
* */
void lv_app_style_refr(void);
/**
* Get a pointer to the application style structure. If modified then 'lv_app_refr_style' should be called
* @return pointer to the application style structure
*/
lv_app_style_t * lv_app_style_get(void);
/**********************
* MACROS
**********************/
#endif /*LV_APP_ENABLE != 0*/
#endif /*LV_APP_H*/

View File

@@ -1,381 +0,0 @@
/**
* @file lv_app_fsel.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_fsel.h"
#if LV_APP_ENABLE != 0
#include <stdio.h>
#include "lv_app_notice.h"
/*********************
* DEFINES
*********************/
#define LV_APP_FSEL_FN_MAX_LEN 128
#define LV_APP_FSEL_PATH_MAX_LEN 256
#define LV_APP_FSEL_PAGE_SIZE 8
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static void fsel_refr(void);
static lv_action_res_t fsel_close_action(lv_obj_t * close, lv_dispi_t * dispi);
static lv_action_res_t fsel_up_action(lv_obj_t * up, lv_dispi_t * dispi);
static lv_action_res_t fsel_next_action(lv_obj_t * next, lv_dispi_t * dispi);
static lv_action_res_t fsel_prev_action(lv_obj_t * prev, lv_dispi_t * dispi);
static lv_action_res_t fsel_drv_action(lv_obj_t * drv, lv_dispi_t * dispi);
static lv_action_res_t fsel_drv_lpr_action(lv_obj_t * drv, lv_dispi_t * dispi);
static lv_action_res_t fsel_folder_action(lv_obj_t * folder, lv_dispi_t * dispi);
static lv_action_res_t fsel_folder_lpr_action(lv_obj_t * folder, lv_dispi_t * dispi);
static lv_action_res_t fsel_file_action(lv_obj_t * file, lv_dispi_t * dispi);
/**********************
* STATIC VARIABLES
**********************/
static const char * fsel_filter;
static char fsel_path[LV_APP_FSEL_PATH_MAX_LEN];
static uint16_t fsel_file_cnt;
static lv_obj_t * fsel_win;
static lv_obj_t * fsel_list;
static lv_lists_t fsel_lists;
static void * fsel_param;
static void (*fsel_ok_action)(void *, const char *);
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the File selector utility
*/
void lv_app_fsel_init(void)
{
lv_lists_get(LV_LISTS_TRANSP, &fsel_lists);
}
/**
* Open the File selector
* @param path start path
* @param filter show only files with a specific extension, e.g. "wav".
* "/" means filter to folders.
* @param param a free parameter which will be added to 'ok_action'
* @param ok_action an action to call when a file or folder is chosen
*/
void lv_app_fsel_open(const char * path, const char * filter, void * param, void (*ok_action)(void *, const char *))
{
/*Save the parameters*/
strcpy(fsel_path, path);
fsel_filter = filter;
fsel_file_cnt = 0;
fsel_param = param;
fsel_ok_action = ok_action;
/*Trim the extra '\' or '/' from the end of path*/
uint16_t i;
for(i = strlen(fsel_path) -1 ; fsel_path[i] == '/' || fsel_path[i] == '\\'; i--) {
fsel_path[i] = '\0';
}
/*Check filter: NULL and "" mean no filtering*/
if(fsel_filter == NULL) fsel_filter = "";
/*Create a window for the File selector*/
lv_app_style_t * app_style = lv_app_style_get();
fsel_win = lv_win_create(lv_scr_act(), NULL);
lv_obj_set_size(fsel_win, LV_HOR_RES, LV_VER_RES);
lv_obj_set_style(fsel_win, &app_style->win_style);
lv_win_add_ctrl_btn(fsel_win, "U:/icon_close", fsel_close_action);
fsel_refr(); /*Refresh the list*/
/*Show instruction when first open with folder filter*/
static bool first_folder_call = false;
if(first_folder_call == false && fsel_filter[0] == '/') {
lv_app_notice_add("Press a folder long\nto choose it!");
first_folder_call = true;
}
}
/**
* Close the File selector
*/
void lv_app_fsel_close(void)
{
if(fsel_win != NULL) {
lv_obj_del(fsel_win);
}
fsel_win = NULL;
fsel_list = NULL;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Refresh the file list according to the current path and filter
*/
static void fsel_refr(void)
{
/*Delete the previous list*/
if(fsel_list != NULL) {
lv_obj_del(fsel_list);
}
lv_win_set_title(fsel_win, fsel_path);
/*Create a new list*/
lv_app_style_t * app_style = lv_app_style_get();
fsel_list = lv_list_create(fsel_win, NULL);
lv_obj_set_width(fsel_list, app_style->win_useful_w);
lv_obj_set_style(fsel_list, lv_lists_get(LV_LISTS_TRANSP, NULL));
lv_obj_set_drag_parent(fsel_list, true);
lv_obj_set_drag_parent(lv_page_get_scrl(fsel_list), true);
lv_rect_set_fit(fsel_list, false, true);
fs_res_t res = FS_RES_OK;
/*At empty path show the drivers */
if(fsel_path[0] == '\0') {
char drv[16];
char buf[2];
lv_obj_t * liste;
fs_get_letters(drv);
uint8_t i;
for(i = 0; drv[i] != '\0'; i++) {
buf[0] = drv[i];
buf[1] = '\0';
liste = lv_list_add(fsel_list, "U:/icon_driver", buf, fsel_drv_action);
/*Add long press action to choose the driver as a folder*/
if(fsel_filter[0] == '/') lv_btn_set_lpr_action(liste, fsel_drv_lpr_action);
}
}
/*List the files/folders with fs interface*/
else {
lv_list_add(fsel_list, "U:/icon_up", "Up", fsel_up_action);
fs_readdir_t rd;
res = fs_readdir_init(&rd, fsel_path);
if(res != FS_RES_OK) {
lv_app_notice_add("Can not read the path\nin File selector");
return;
}
/*At not first page add prev. page button */
if(fsel_file_cnt != 0) {
lv_list_add(fsel_list, "U:/icon_left", "Previous page", fsel_prev_action);
}
char fn[LV_APP_FSEL_FN_MAX_LEN];
/*Read the files from the previous pages*/
uint16_t file_cnt = 0;
while(file_cnt <= fsel_file_cnt) {
res = fs_readdir(&rd, fn);
if(res != FS_RES_OK || fn[0] == '\0'){
lv_app_notice_add("Can not read the path\nin File selector");
return;
}
file_cnt ++;
}
/*Add list elements from the files and folders*/
while(res == FS_RES_OK && fn[0] != '\0') {
if(fn[0] == '/') { /*Add a folder*/
lv_obj_t * liste;
liste = lv_list_add(fsel_list, "U:/icon_folder", &fn[1], fsel_folder_action);
/*Add long press action to choose a folder*/
if(fsel_filter[0] == '/') lv_btn_set_lpr_action(liste, fsel_folder_lpr_action);
fsel_file_cnt ++;
file_cnt ++;
}
/*Add a file if it is not filtered*/
else if(fsel_filter[0] == '\0' || /*No filtering or ...*/
(strcmp(fs_get_ext(fn), fsel_filter) == 0 && /*.. the filter matches*/
fsel_filter[0] != '/')) {
lv_list_add(fsel_list, "U:/icon_file", fn, fsel_file_action);
fsel_file_cnt ++;
file_cnt ++;
}
/*Get the next element*/
res = fs_readdir(&rd, fn);
/*Show only LV_APP_FSEL_MAX_FILE elements and add a Next page button*/
if(fsel_file_cnt != 0 && fsel_file_cnt % LV_APP_FSEL_PAGE_SIZE == 0) {
lv_list_add(fsel_list, "U:/icon_right", "Next page", fsel_next_action);
break;
}
}
/*Close the read directory*/
fs_readdir_close(&rd);
}
if(res != FS_RES_OK) {
lv_app_notice_add("Can not read the path\nin File selector");
}
/*Focus to the top of the list*/
lv_obj_set_y(lv_page_get_scrl(fsel_list), 0);
}
/**
* Called when the File selector window close button is released
* @param close pointer to the close button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the window is deleted in the function
*/
static lv_action_res_t fsel_close_action(lv_obj_t * close, lv_dispi_t * dispi)
{
lv_app_fsel_close();
return LV_ACTION_RES_INV;
}
/**
* Called when the Up list element is released to step one level
* @param up pointer to the Up button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_up_action(lv_obj_t * up, lv_dispi_t * dispi)
{
fs_up(fsel_path);
fsel_file_cnt = 0;
fsel_refr();
return LV_ACTION_RES_INV;
}
/**
* Called when the Next list element is released to go to the next page
* @param next pointer to the Next button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_next_action(lv_obj_t * next, lv_dispi_t * dispi)
{
fsel_refr();
return LV_ACTION_RES_INV;
}
/**
* Called when the Prev list element is released to previous page
* @param prev pointer to the Prev button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_prev_action(lv_obj_t * prev, lv_dispi_t * dispi)
{
if(fsel_file_cnt <= 2 * LV_APP_FSEL_PAGE_SIZE) fsel_file_cnt = 0;
else if(fsel_file_cnt % LV_APP_FSEL_PAGE_SIZE == 0) {
fsel_file_cnt -= 2 * LV_APP_FSEL_PAGE_SIZE;
} else {
fsel_file_cnt = ((fsel_file_cnt / LV_APP_FSEL_PAGE_SIZE) - 1) * LV_APP_FSEL_PAGE_SIZE;
}
fsel_refr();
return LV_ACTION_RES_INV;
}
/**
* Called when the Driver list element is released to step into a driver
* @param drv pointer to the Driver button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_drv_action(lv_obj_t * drv, lv_dispi_t * dispi)
{
sprintf(fsel_path, "%s:", lv_list_element_get_txt(drv));
fsel_file_cnt = 0;
fsel_refr();
return LV_ACTION_RES_INV;
}
/**
* Called when the Driver list element is long pressed to choose it
* @param drv pointer to the Driver button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_drv_lpr_action(lv_obj_t * drv, lv_dispi_t * dispi)
{
sprintf(fsel_path, "%s:", lv_list_element_get_txt(drv));
if(fsel_ok_action != NULL) {
fsel_ok_action(fsel_param, fsel_path);
}
lv_app_fsel_close();
return LV_ACTION_RES_INV;
}
/**
* Called when a folder list element is released to enter into it
* @param folder pointer to a folder button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_folder_action(lv_obj_t * folder, lv_dispi_t * dispi)
{
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_element_get_txt(folder));
fsel_file_cnt = 0;
fsel_refr();
return LV_ACTION_RES_INV;
}
/**
* Called when a folder list element is long pressed to choose it
* @param folder pointer to a folder button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_folder_lpr_action(lv_obj_t * folder, lv_dispi_t * dispi)
{
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_element_get_txt(folder));
if(fsel_ok_action != NULL) {
fsel_ok_action(fsel_param, fsel_path);
}
lv_app_fsel_close();
return LV_ACTION_RES_INV;
}
/**
* Called when a file list element is released to choose it
* @param file pointer to a file button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t fsel_file_action(lv_obj_t * file, lv_dispi_t * dispi)
{
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_element_get_txt(file));
if(fsel_ok_action != NULL) {
fsel_ok_action(fsel_param, fsel_path);
}
lv_app_fsel_close();
return LV_ACTION_RES_INV;
}
#endif /*LV_APP_ENABLE != 0*/

View File

@@ -1,54 +0,0 @@
/**
* @file lv_app_fsel.h
*
*/
#ifndef LV_APP_FSEL_H
#define LV_APP_FSEL_H
/*********************
* INCLUDES
*********************/
#include "../lv_app.h"
#if LV_APP_ENABLE != 0
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initialize the File selector utility
*/
void lv_app_fsel_init(void);
/**
* Open the File selector
* @param path start path
* @param filter show only files with a specific extension, e.g. "wav".
* "/" means filter to folders.
* @param param a free parameter which will be added to 'ok_action'
* @param ok_action an action to call when a file or folder is chosen
*/
void lv_app_fsel_open(const char * path, const char * filter, void * param,
void (*ok_action)(void *, const char *));
/**
* Close the File selector
*/
void lv_app_fsel_close(void);
/**********************
* MACROS
**********************/
#endif /*LV_APP_ENABLE != 0*/
#endif /*LV_APP_FSEL_H*/

View File

@@ -1,248 +0,0 @@
/**
* @file lv_app_kb.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_kb.h"
#if LV_APP_ENABLE != 0
#include "lvgl/lv_objx/lv_btnm.h"
#include "lvgl/lv_objx/lv_ta.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static lv_action_res_t lv_app_kb_action(lv_obj_t * btnm, uint16_t i);
/**********************
* STATIC VARIABLES
**********************/
static lv_obj_t * kb_btnm;
static lv_obj_t * kb_win;
static lv_obj_t * kb_ta;
static const char * kb_map_lc[] = {
"\0051#", "\004q", "\004w", "\004e", "\004r", "\004t", "\004y", "\004u", "\004i", "\004o", "\004p", "\007Del", "\n",
"\007ABC", "\004a", "\004s", "\004d", "\004f", "\004g", "\004h", "\004j", "\004k", "\004l", "\010Enter", "\n",
"_", "-", "z", "x", "c", "v", "b", "n", "m", ".", ",", ":", "\n",
"\002Hide", "\002Left", "\006 ", "\002Right", "\002Ok", ""
};
static const char * kb_map_uc[] = {
"\0051#", "\004Q", "\004W", "\004E", "\004R", "\004T", "\004Y", "\004U", "\004I", "\004O", "\004P", "\007Del", "\n",
"\007abc", "\004A", "\004S", "\004D", "\004F", "\004G", "\004H", "\004J", "\004K", "\004L", "\010Enter", "\n",
"_", "-", "Z", "X", "C", "V", "B", "N", "M", ".", ",", ":", "\n",
"\002Hide", "\002Left", "\006 ", "\002Right", "\002Ok", ""
};
static const char * kb_map_spec[] = {
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "\002Del", "\n",
"\002abc", "+", "-", "/", "*", "=", "%", "!", "?", "#", "<", ">", "\n",
"\\", "@", "$", "(", ")", "{", "}", "[", "]", ";", "\"", "'", "\n",
"\002Hide", "\002Left", "\006 ", "\002Right", "\002Ok", ""
};
static const char * kb_map_num[] = {
"1", "2", "3", "\002Hide","\n",
"4", "5", "6", "\002Ok", "\n",
"7", "8", "9", "\002Del", "\n",
"+/-", "0", ".", "Left", "Right", ""
};
static cord_t kb_ta_ori_size;
static uint8_t kb_mode;
static void (*kb_close_action)(lv_obj_t *);
static void (*kb_ok_action)(lv_obj_t *);
static lv_btnms_t kb_btnms;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the application keyboard
*/
void lv_app_kb_init(void)
{
lv_btnms_get(LV_BTNMS_DEF, &kb_btnms);
kb_btnms.rects.gcolor = COLOR_WHITE;
kb_btnms.rects.objs.color = COLOR_WHITE;
kb_btnms.rects.opad = 4 + LV_DOWNSCALE;
kb_btnms.rects.vpad = 3 + LV_DOWNSCALE;
kb_btnms.rects.hpad = 3 + LV_DOWNSCALE;
kb_btnms.rects.round = 0;
kb_btnms.rects.bwidth = 0;
kb_btnms.btns.rects.bwidth = 0;
kb_btnms.btns.rects.round = 0;
}
/**
* Open a keyboard for a text area object
* @param ta pointer to a text area object
* @param mode 'OR'd values of 'lv_app_kb_mode_t' enum
* @param close a function to call when the keyboard is closed
* @param ok a function to called when the "Ok" button is pressed
*/
void lv_app_kb_open(lv_obj_t * ta, lv_app_kb_mode_t mode, void (*close)(lv_obj_t *), void (*ok)(lv_obj_t *))
{
/*Close the previous keyboard*/
if(kb_btnm != NULL) {
lv_app_kb_close(false);
}
/*Save some parameters*/
kb_ta = ta;
kb_mode = mode;
kb_close_action = close;
kb_ok_action = ok;
/*Create a button matrix for the keyboard */
kb_btnm = lv_btnm_create(lv_scr_act(), NULL);
lv_obj_set_size(kb_btnm, LV_HOR_RES, LV_VER_RES / 2);
lv_obj_align(kb_btnm, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
lv_btnm_set_cb(kb_btnm, lv_app_kb_action);
if(mode & LV_APP_KB_MODE_TXT) {
kb_btnms.labels.font = LV_APP_FONT_MEDIUM;
lv_btnm_set_map(kb_btnm, kb_map_lc);
}
else if(mode & LV_APP_KB_MODE_NUM) {
kb_btnms.labels.font = LV_APP_FONT_LARGE;
lv_btnm_set_map(kb_btnm, kb_map_num);
}
lv_obj_set_style(kb_btnm, &kb_btnms);
/*Reduce teh size of the window and align it to the top*/
kb_win = lv_app_win_get_from_obj(kb_ta);
lv_obj_set_height(kb_win, LV_VER_RES / 2);
lv_obj_set_y(kb_win, 0);
/*If the text area is higher then the new size of the window redus its size too*/
lv_app_style_t * app_style = lv_app_style_get();
cord_t win_h = lv_obj_get_height(kb_win) - 2 * app_style->win_style.pages.scrl_rects.vpad;
kb_ta_ori_size = lv_obj_get_height(kb_ta);
if(lv_obj_get_height(kb_ta) > win_h) {
lv_obj_set_height(kb_ta, win_h);
}
lv_ta_set_cursor_pos(kb_ta, LV_TA_CUR_LAST);
#if LV_APP_ANIM_LEVEL != 0
lv_page_focus(lv_win_get_content(kb_win), kb_ta, true);
#else
lv_page_focus(kb_win, kb_ta, false);
#endif
}
/**
* Close the keyboard
* @param ok true: call the ok function, false: call the close function
*/
void lv_app_kb_close(bool ok)
{
if(kb_btnm == NULL) return;
if(ok == false) {
if(kb_close_action != NULL) kb_close_action(kb_ta);
} else {
if(kb_ok_action != NULL) kb_ok_action(kb_ta);
}
/*Reset the modified sizes*/
lv_obj_set_height(kb_ta, kb_ta_ori_size);
lv_obj_set_size(kb_win, LV_HOR_RES, LV_VER_RES);
kb_win = NULL;
lv_obj_del(kb_btnm);
kb_btnm = NULL;
kb_ta = NULL;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Called when a button of 'kb_btnm' is released
* @param btnm pointer to 'kb_btnm'
* @param i the index of the released button from the current btnm map
* @return LV_ACTION_RES_INV if the btnm is deleted else LV_ACTION_RES_OK
*/
static lv_action_res_t lv_app_kb_action(lv_obj_t * btnm, uint16_t i)
{
const char ** map = lv_btnm_get_map(btnm);
const char * txt = map[i];
/*Ignore the unit size number of the text*/
if(txt[0] <= '\011') txt++;
/*Do the corresponding action according to the text of the button*/
if(strcmp(txt, "abc") == 0) {
lv_btnm_set_map(btnm, kb_map_lc);
} else if(strcmp(txt, "ABC") == 0) {
lv_btnm_set_map(btnm, kb_map_uc);
} else if(strcmp(txt, "1#") == 0) {
lv_btnm_set_map(btnm, kb_map_spec);
} else if(strcmp(txt, "Enter") == 0) {
lv_ta_add_char(kb_ta, '\n');
} else if(strcmp(txt, "Left") == 0) {
lv_ta_cursor_left(kb_ta);
} else if(strcmp(txt, "Right") == 0) {
lv_ta_cursor_right(kb_ta);
} else if(strcmp(txt, "Del") == 0) {
lv_ta_del(kb_ta);
} else if(strcmp(txt, "+/-") == 0) {
uint16_t cur = lv_ta_get_cursor_pos(kb_ta);
const char * ta_txt = lv_ta_get_txt(kb_ta);
if(ta_txt[0] == '-') {
lv_ta_set_cursor_pos(kb_ta, 1);
lv_ta_del(kb_ta);
lv_ta_add_char(kb_ta, '+');
lv_ta_set_cursor_pos(kb_ta, cur);
} else if(ta_txt[0] == '+') {
lv_ta_set_cursor_pos(kb_ta, 1);
lv_ta_del(kb_ta);
lv_ta_add_char(kb_ta, '-');
lv_ta_set_cursor_pos(kb_ta, cur);
} else {
lv_ta_set_cursor_pos(kb_ta, 0);
lv_ta_add_char(kb_ta, '-');
lv_ta_set_cursor_pos(kb_ta, cur + 1);
}
} else if(strcmp(txt, "Hide") == 0) {
lv_app_kb_close(false);
return LV_ACTION_RES_INV;
} else if(strcmp(txt, "Ok") == 0) {
lv_app_kb_close(true);
return LV_ACTION_RES_INV;
} else {
lv_ta_add_text(kb_ta, txt);
}
#if LV_APP_ANIM_LEVEL != 0
lv_page_focus(lv_win_get_content(kb_win), kb_ta, true);
#else
lv_page_focus(kb_win, kb_ta, false);
#endif
return LV_ACTION_RES_OK;
}
#endif /*LV_APP_ENABLE != 0*/

View File

@@ -1,57 +0,0 @@
/**
* @file lv_app_kb.h
*
*/
#ifndef LV_APP_KB_H
#define LV_APP_KB_H
/*********************
* INCLUDES
*********************/
#include "../lv_app.h"
#if LV_APP_ENABLE != 0
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef enum
{
LV_APP_KB_MODE_TXT = 0x01,
LV_APP_KB_MODE_NUM = 0x02,
}lv_app_kb_mode_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initialize the application keyboard
*/
void lv_app_kb_init(void);
/**
* Open a keyboard for a text area object
* @param ta pointer to a text area object
* @param mode 'OR'd values of 'lv_app_kb_mode_t' enum
* @param close a function to call when the keyboard is closed
* @param ok a function to called when the "Ok" button is pressed
*/
void lv_app_kb_open(lv_obj_t * ta, lv_app_kb_mode_t mode, void (*close)(lv_obj_t *), void (*ok)(lv_obj_t *));
/**
* Close the keyboard
* @param ok true: call the ok function, false: call the close function
*/
void lv_app_kb_close(bool ok);
/**********************
* MACROS
**********************/
#endif /*LV_APP_ENABLE != 0*/
#endif /*LV_APP_KB_H*/

View File

@@ -1,93 +0,0 @@
/**
* @file lv_app_notice.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_notice.h"
#if LV_APP_ENABLE != 0
#include "lvgl/lv_objx/lv_rect.h"
#include "lvgl/lv_objx/lv_label.h"
#include "lvgl/lv_misc/anim.h"
#include <stdio.h>
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
static lv_obj_t * notice_h;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the Notifications
*/
void lv_app_notice_init(void)
{
lv_app_style_t * app_style = lv_app_style_get();
notice_h = lv_rect_create(lv_scr_act(), NULL);
lv_obj_set_size(notice_h, LV_HOR_RES, LV_VER_RES - app_style->menu_h);
lv_obj_set_y(notice_h, app_style->menu_h);
lv_obj_set_click(notice_h, false);
lv_obj_set_style(notice_h, lv_rects_get(LV_RECTS_TRANSP, NULL));
lv_rect_set_layout(notice_h, LV_RECT_LAYOUT_COL_R);
}
/**
* Add a notification with a given text
* @param format pritntf-like format string
* @return pointer the notice which is a message box (lv_mbox) object
*/
lv_obj_t * lv_app_notice_add(const char * format, ...)
{
char txt[LV_APP_NOTICE_MAX_LEN];
va_list va;
va_start(va, format);
vsprintf(txt,format, va);
va_end(va);
lv_app_style_t * app_style = lv_app_style_get();
lv_obj_t * mbox;
mbox = lv_mbox_create(notice_h, NULL);
lv_obj_set_style(mbox, lv_mboxs_get(LV_MBOXS_INFO, NULL));
lv_mbox_set_title(mbox, "");
lv_mbox_set_text(mbox, txt);
lv_obj_set_opa(mbox, app_style->menu_opa);
#if LV_APP_NOTICE_SHOW_TIME != 0
lv_mbox_start_auto_close(mbox, LV_APP_NOTICE_SHOW_TIME);
#endif
lv_obj_set_parent(notice_h, lv_scr_act());
return mbox;
}
/**********************
* STATIC FUNCTIONS
**********************/
#endif

View File

@@ -1,46 +0,0 @@
/**
* @file lv_app_notice.h
*
*/
#ifndef LV_APP_NOTICE_H
#define LV_APP_NOTICE_H
/*********************
* INCLUDES
*********************/
#include "../lv_app.h"
#include <stdarg.h>
#if LV_APP_ENABLE != 0
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initialize the Notifications
*/
void lv_app_notice_init(void);
/**
* Add a notification with a given text
* @param format pritntf-like format string
* @return pointer the notice which is a message box (lv_mbox) object
*/
lv_obj_t * lv_app_notice_add(const char * format, ...);
/**********************
* MACROS
**********************/
#endif /*LV_APP_NOTICE_H*/
#endif

View File

@@ -1,218 +0,0 @@
/**
* @file lv_app_example.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_example.h"
#if LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0
#include "../lv_app/lv_app_util/lv_app_kb.h"
#include <stdio.h>
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/*Application specific data for an instance of this application*/
typedef struct
{
}my_app_data_t;
/*Application specific data a window of this application*/
typedef struct
{
}my_win_data_t;
/*Application specific data for a shortcut of this application*/
typedef struct
{
lv_obj_t * label;
}my_sc_data_t;
/**********************
* STATIC PROTOTYPES
**********************/
static void my_app_run(lv_app_inst_t * app, void * conf);
static void my_app_close(lv_app_inst_t * app);
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec, lv_app_com_type_t type , const void * data, uint32_t size);
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc);
static void my_sc_close(lv_app_inst_t * app);
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win);
static void my_win_close(lv_app_inst_t * app);
static lv_action_res_t ta_rel_action(lv_obj_t * ta, lv_dispi_t * dispi);
static void kb_ok_action(lv_obj_t * ta);
/**********************
* STATIC VARIABLES
**********************/
static lv_app_dsc_t my_app_dsc =
{
.name = "Example",
.mode = LV_APP_MODE_NONE,
.app_run = my_app_run,
.app_close = my_app_close,
.com_rec = my_com_rec,
.win_open = my_win_open,
.win_close = my_win_close,
.sc_open = my_sc_open,
.sc_close = my_sc_close,
.app_data_size = sizeof(my_app_data_t),
.sc_data_size = sizeof(my_sc_data_t),
.win_data_size = sizeof(my_win_data_t),
};
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the application
* @return pointer to the application descriptor of this application
*/
const lv_app_dsc_t * lv_app_example_init(void)
{
return &my_app_dsc;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Run an application according to 'app_dsc'
* @param app_dsc pointer to an application descriptor
* @param conf pointer to a lv_app_example_conf_t structure with configuration data or NULL if unused
* @return pointer to the opened application or NULL if any error occurred
*/
static void my_app_run(lv_app_inst_t * app, void * conf)
{
/*Initialize the application*/
}
/**
* Close a running application.
* Close the Window and the Shortcut too if opened.
* Free all the allocated memory by this application.
* @param app pointer to an application
*/
static void my_app_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_app_data'*/
}
/**
* Read the data have been sent to this application
* @param app_send pointer to an application which sent the message
* @param app_rec pointer to an application which is receiving the message
* @param type type of data from 'lv_app_com_type_t' enum
* @param data pointer to the sent data
* @param size length of 'data' in bytes
*/
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec,
lv_app_com_type_t type , const void * data, uint32_t size)
{
if(type == LV_APP_COM_TYPE_CHAR) { /*data: string*/
my_sc_data_t * sc_data = app_rec->sc_data;
if (sc_data->label != NULL) {
lv_label_set_text_array(sc_data->label, data, size);
lv_obj_align(sc_data->label , NULL,LV_ALIGN_CENTER, 0, 0);
}
}
}
/**
* Open a shortcut for an application
* @param app pointer to an application
* @param sc pointer to an object where the application
* can create content of the shortcut
*/
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc)
{
my_sc_data_t * sc_data = app->sc_data;
lv_app_style_t * app_style = lv_app_style_get();
sc_data->label = lv_label_create(sc, NULL);
lv_label_set_text(sc_data->label, "Empty");
lv_obj_set_style(sc_data->label, &app_style->sc_txt_style);
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
/**
* Close the shortcut of an application
* @param app pointer to an application
*/
static void my_sc_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_sc_data'*/
}
/**
* Open the application in a window
* @param app pointer to an application
* @param win pointer to a window object where
* the application can create content
*/
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win)
{
lv_obj_t * ta;
ta = lv_ta_create(win, NULL);
lv_obj_set_size_us(ta, 200, 100);
lv_obj_set_pos_us(ta, 0, 0);
lv_obj_set_free_p(ta, app);
lv_page_set_rel_action(ta, ta_rel_action);
lv_ta_set_text(ta, "Write a text to send to the other applications");
}
/**
* Close the window of an application
* @param app pointer to an application
*/
static void my_win_close(lv_app_inst_t * app)
{
}
/*--------------------
* OTHER FUNCTIONS
---------------------*/
/**
* Called when the text area on the window is released to open the app. keyboard
* @param ta pointer to the text area on the window
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the text area is not deleted
*/
static lv_action_res_t ta_rel_action(lv_obj_t * ta, lv_dispi_t * dispi)
{
lv_ta_set_text(ta, ""); /*Clear the ta*/
lv_app_kb_open(ta, LV_APP_KB_MODE_TXT, NULL, kb_ok_action);
return LV_ACTION_RES_OK;
}
/**
* Called when the "Ok" button is pressed on the app. keyboard
* @param ta pointer to the text area assigned to the app. kexboard
*/
static void kb_ok_action(lv_obj_t * ta)
{
lv_app_inst_t * app = lv_obj_get_free_p(ta);
const char * txt = lv_ta_get_txt(ta);
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, txt, strlen(txt));
}
#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0*/

View File

@@ -1,39 +0,0 @@
/**
* @file lv_app_example.h
*
*/
#ifndef LV_APP_EXAMPLE_H
#define LV_APP_EXAMPLE_H
/*********************
* INCLUDES
*********************/
#include "lvgl/lv_app/lv_app.h"
#if LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef struct
{
}lv_app_example_conf_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
const lv_app_dsc_t * lv_app_example_init(void);
/**********************
* MACROS
**********************/
#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_EXAMPLE != 0*/
#endif /* LV_APP_EXAMPLE_H */

View File

@@ -1,930 +0,0 @@
/**
* @file lv_app_example.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_files.h"
#if LV_APP_ENABLE != 0 && USE_LV_APP_FILES != 0
#include <stdio.h>
#include "misc/os/ptask.h"
#include "../lv_app/lv_app_util/lv_app_kb.h"
#include "../lv_app/lv_app_util/lv_app_notice.h"
/*********************
* DEFINES
*********************/
#define LV_APP_FILES_CHUNK_MIN_SIZE 32
#define LV_APP_FILES_CHUNK_MIN_TIME 10
#define LV_APP_FILES_CHUNK_MAX_TIME 10000
/**********************
* TYPEDEFS
**********************/
/*Application specific data for an instance of this application*/
typedef struct
{
char path[LV_APP_FILES_PATH_MAX_LEN];
char fn[LV_APP_FILES_FN_MAX_LEN];
fs_file_t file;
uint8_t file_cnt;
uint16_t chunk_delay;
uint16_t chunk_size;
uint8_t send_fn :1;
uint8_t send_size :1;
uint8_t send_crc :1;
uint8_t send_in_prog :1;
ptask_t * send_task;
}my_app_data_t;
/*Application specific data a window of this application*/
typedef struct
{
lv_obj_t * file_list;
lv_obj_t * send_set_h;
}my_win_data_t;
/*Application specific data for a shortcut of this application*/
typedef struct
{
lv_obj_t * label;
}my_sc_data_t;
typedef enum
{
SEND_SETTINGS_FN,
SEND_SETTINGS_SIZE,
SEND_SETTINGS_CRC,
SEND_SETTINGS_CHUNK_SIZE,
SEND_SETTINGS_CHUNK_DELAY,
}send_settings_id_t;
/**********************
* STATIC PROTOTYPES
**********************/
static void my_app_run(lv_app_inst_t * app, void * conf);
static void my_app_close(lv_app_inst_t * app);
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec, lv_app_com_type_t type , const void * data, uint32_t size);
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc);
static void my_sc_close(lv_app_inst_t * app);
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win);
static void my_win_close(lv_app_inst_t * app);
static void win_load_file_list(lv_app_inst_t * app);
static void win_create_list(lv_app_inst_t * app);
static lv_action_res_t win_up_action(lv_obj_t * up, lv_dispi_t * dispi);
static lv_action_res_t win_next_action(lv_obj_t * next, lv_dispi_t * dispi);
static lv_action_res_t win_prev_action(lv_obj_t * prev, lv_dispi_t * dispi);
static lv_action_res_t win_drv_action(lv_obj_t * drv, lv_dispi_t * dispi);
static lv_action_res_t win_folder_action(lv_obj_t * folder, lv_dispi_t * dispi);
static lv_action_res_t win_file_action(lv_obj_t * file, lv_dispi_t * dispi);
static lv_action_res_t win_send_rel_action(lv_obj_t * send, lv_dispi_t * dispi);
static lv_action_res_t win_send_lpr_action(lv_obj_t * send, lv_dispi_t * dispi);
static lv_action_res_t win_send_settings_element_rel_action(lv_obj_t * element, lv_dispi_t * dispi);
static lv_action_res_t win_back_action(lv_obj_t * back, lv_dispi_t * dispi);
static lv_action_res_t win_del_rel_action(lv_obj_t * del, lv_dispi_t * dispi);
static lv_action_res_t win_del_lpr_action(lv_obj_t * del, lv_dispi_t * dispi);
static void send_settings_kb_close_action(lv_obj_t * ta);
static void send_settings_kb_ok_action(lv_obj_t * ta);
static void start_send(lv_app_inst_t * app, const char * path);
static void send_task(void * param);
/**********************
* STATIC VARIABLES
**********************/
static lv_app_dsc_t my_app_dsc =
{
.name = "Files",
.mode = LV_APP_MODE_NONE,
.app_run = my_app_run,
.app_close = my_app_close,
.com_rec = my_com_rec,
.win_open = my_win_open,
.win_close = my_win_close,
.sc_open = my_sc_open,
.sc_close = my_sc_close,
.app_data_size = sizeof(my_app_data_t),
.sc_data_size = sizeof(my_sc_data_t),
.win_data_size = sizeof(my_win_data_t),
};
static lv_labels_t sc_labels;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the application
* @return pointer to the application descriptor of this application
*/
const lv_app_dsc_t * lv_app_files_init(void)
{
lv_app_style_t * app_style = lv_app_style_get();
memcpy(&sc_labels, &app_style->sc_txt_style, sizeof(lv_labels_t));
sc_labels.font = LV_APP_FONT_LARGE;
return &my_app_dsc;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Run an application according to 'app_dsc'
* @param app_dsc pointer to an application descriptor
* @param conf pointer to a lv_app_example_conf_t structure with configuration data or NULL if unused
* @return pointer to the opened application or NULL if any error occurred
*/
static void my_app_run(lv_app_inst_t * app, void * conf)
{
/*Initialize the application*/
my_app_data_t * app_data = app->app_data;
app_data->file_cnt = 0;
app_data->path[0] = '\0';
app_data->fn[0] = '\0';
app_data->send_fn = 0;
app_data->send_size = 0;
app_data->send_crc = 0;
app_data->chunk_size = LV_APP_FILES_CHUNK_DEF_SIZE;
app_data->chunk_delay = LV_APP_FILES_CHUNK_DEF_TIME;
app_data->send_in_prog = 0;
app_data->send_task = ptask_create(send_task, LV_APP_FILES_CHUNK_DEF_TIME, PTASK_PRIO_OFF, app);
}
/**
* Close a running application.
* Close the Window and the Shortcut too if opened.
* Free all the allocated memory by this application.
* @param app pointer to an application
*/
static void my_app_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_app_data'*/
my_app_data_t * app_data = app->app_data;
ptask_del(app_data->send_task);
if(app_data->send_in_prog != 0) fs_close(&app_data->file);
}
/**
* Read the data have been sent to this application
* @param app_send pointer to an application which sent the message
* @param app_rec pointer to an application which is receiving the message
* @param type type of data from 'lv_app_com_type_t' enum
* @param data pointer to the sent data
* @param size length of 'data' in bytes
*/
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec,
lv_app_com_type_t type , const void * data, uint32_t size)
{
if(type == LV_APP_COM_TYPE_CHAR) {
/*Check for file query. E.g. "U:/file.txt?"*/
const char * path = data;
if(path[size - 1] == '?') {
if(size > LV_APP_FILES_PATH_MAX_LEN + LV_APP_FILES_FN_MAX_LEN) {
lv_app_notice_add("Can not send file:\ntoo long path");
}
char path_fn[LV_APP_FILES_PATH_MAX_LEN + LV_APP_FILES_FN_MAX_LEN];
memcpy(path_fn, data, size - 1); /*-1 to ignore the '?' at the end*/
path_fn[size - 1] = '\0';
start_send(app_rec, path_fn);
}
}
}
/**
* Open a shortcut for an application
* @param app pointer to an application
* @param sc pointer to an object where the application
* can create content of the shortcut
*/
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc)
{
my_sc_data_t * sc_data = app->sc_data;
my_app_data_t * app_data = app->app_data;
sc_data->label = lv_label_create(sc, NULL);
lv_obj_set_style(sc_data->label, &sc_labels);
lv_label_set_text(sc_data->label, fs_get_last(app_data->path));
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
/**
* Close the shortcut of an application
* @param app pointer to an application
*/
static void my_sc_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_sc_data'*/
}
/**
* Open the application in a window
* @param app pointer to an application
* @param win pointer to a window object where
* the application can create content
*/
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win)
{
my_win_data_t * win_data = app->win_data;
my_app_data_t * app_data = app->app_data;
app_data->file_cnt = 0;
win_data->file_list = NULL;
win_data->send_set_h = NULL;
lv_win_set_title(win, app_data->path);
win_load_file_list(app);
}
/**
* Close the window of an application
* @param app pointer to an application
*/
static void my_win_close(lv_app_inst_t * app)
{
}
/*--------------------
* OTHER FUNCTIONS
---------------------*/
/**
* Create an mpty list on the window. 'win_load_file_list' will fill it.
* @param app pointer to a Files application
*/
static void win_create_list(lv_app_inst_t * app)
{
lv_app_style_t * app_style = lv_app_style_get();
my_win_data_t * win_data = app->win_data;
/*Delete the previous list*/
if(win_data->file_list != NULL) {
lv_obj_del(win_data->file_list);
}
/*Create a new list*/
win_data->file_list = lv_list_create(app->win, NULL);
lv_obj_set_width(win_data->file_list, app_style->win_useful_w);
lv_obj_set_style(win_data->file_list, lv_lists_get(LV_LISTS_TRANSP, NULL));
lv_obj_set_drag_parent(win_data->file_list, true);
lv_obj_set_drag_parent(lv_page_get_scrl(win_data->file_list), true);
lv_rect_set_fit(win_data->file_list, false, true);
lv_rect_set_layout(lv_page_get_scrl(win_data->file_list), LV_RECT_LAYOUT_COL_L);
}
/**
* Load the file list from the current path on the window
* @param app pointer to a Files application
*/
static void win_load_file_list(lv_app_inst_t * app)
{
my_app_data_t * app_data = app->app_data;
my_win_data_t * win_data = app->win_data;
/*Create a new list*/
win_create_list(app);
fs_res_t res = FS_RES_OK;
/*At empty path show the drivers */
lv_obj_t * liste;
if(app_data->path[0] == '\0') {
char drv[16];
char buf[2];
fs_get_letters(drv);
uint8_t i;
for(i = 0; drv[i] != '\0'; i++) {
buf[0] = drv[i];
buf[1] = '\0';
liste = lv_list_add(win_data->file_list, "U:/icon_driver", buf, win_drv_action);
lv_obj_set_free_p(liste, app);
}
}
/*List the files/folders with fs interface*/
else {
liste = lv_list_add(win_data->file_list, "U:/icon_up", "Up", win_up_action);
lv_obj_set_free_p(liste, app);
fs_readdir_t rd;
res = fs_readdir_init(&rd, app_data->path);
if(res != FS_RES_OK) {
lv_app_notice_add("Can not read the\npath in Files");
return;
}
/*At not first page add prev. page button */
if(app_data->file_cnt != 0) {
liste = lv_list_add(win_data->file_list, "U:/icon_left", "Previous page", win_prev_action);
lv_obj_set_free_p(liste, app);
}
char fn[LV_APP_FILES_FN_MAX_LEN];
/*Read the files from the previous pages*/
uint16_t file_cnt = 0;
while(file_cnt <= app_data->file_cnt) {
res = fs_readdir(&rd, fn);
if(res != FS_RES_OK || fn[0] == '\0'){
lv_app_notice_add("Can not read\nthe path in Files");
return;
}
file_cnt ++;
}
/*Add list elements from the files and folders*/
while(res == FS_RES_OK && fn[0] != '\0') {
if(fn[0] == '/') { /*Add a folder*/
lv_obj_t * liste;
liste = lv_list_add(win_data->file_list, "U:/icon_folder", &fn[1], win_folder_action);
lv_obj_set_free_p(liste, app);
app_data->file_cnt ++;
}
/*Add a file*/
else {
liste = lv_list_add(win_data->file_list, "U:/icon_file", fn, win_file_action);
lv_obj_set_free_p(liste, app);
app_data->file_cnt ++;
}
/*Get the next element*/
res = fs_readdir(&rd, fn);
/*Show only LV_APP_FSEL_MAX_FILE elements and add a Next page button*/
if(app_data->file_cnt != 0 && app_data->file_cnt % LV_APP_FILES_PAGE_SIZE == 0) {
liste = lv_list_add(win_data->file_list, "U:/icon_right", "Next page", win_next_action);
lv_obj_set_free_p(liste, app);
break;
}
}
/*Close the read directory*/
fs_readdir_close(&rd);
}
if(res != FS_RES_OK) {
lv_app_notice_add("Can not read\nthe path in Files");
}
/*Focus to the top of the list*/
lv_obj_set_y(lv_page_get_scrl(win_data->file_list), 0);
return;
}
/**
* Called when the Up list element is released to step one level
* @param up pointer to the Up button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_up_action(lv_obj_t * up, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(up);
my_app_data_t * app_data = app->app_data;
fs_up(app_data->path);
app_data->file_cnt = 0;
lv_win_set_title(app->win, app_data->path);
my_sc_data_t * sc_data = app->sc_data;
if(sc_data != NULL) {
lv_label_set_text(sc_data->label, fs_get_last(app_data->path));
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
win_load_file_list(app);
return LV_ACTION_RES_INV;
}
/**
* Called when the Next list element is released to go to the next page
* @param next pointer to the Next button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_next_action(lv_obj_t * next, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(next);
win_load_file_list(app);
return LV_ACTION_RES_INV;
}
/**
* Called when the Prev list element is released to previous page
* @param prev pointer to the Prev button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_prev_action(lv_obj_t * prev, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(prev);
my_app_data_t * app_data = app->app_data;
if(app_data->file_cnt <= 2 * LV_APP_FILES_PAGE_SIZE) app_data->file_cnt = 0;
else if(app_data->file_cnt % LV_APP_FILES_PAGE_SIZE == 0) {
app_data->file_cnt -= 2 * LV_APP_FILES_PAGE_SIZE;
} else {
app_data->file_cnt = ((app_data->file_cnt / LV_APP_FILES_PAGE_SIZE) - 1) * LV_APP_FILES_PAGE_SIZE;
}
win_load_file_list(app);
return LV_ACTION_RES_INV;
}
/**
* Called when the Driver list element is released to step into a driver
* @param drv pointer to the Driver button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_drv_action(lv_obj_t * drv, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(drv);
my_app_data_t * app_data = app->app_data;
sprintf(app_data->path, "%s:", lv_list_element_get_txt(drv));
app_data->file_cnt = 0;
lv_win_set_title(app->win, app_data->path);
my_sc_data_t * sc_data = app->sc_data;
if(sc_data != NULL) {
lv_label_set_text(sc_data->label, fs_get_last(app_data->path));
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
win_load_file_list(app);
return LV_ACTION_RES_INV;
}
/**
* Called when a folder list element is released to enter into it
* @param folder pointer to a folder button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_folder_action(lv_obj_t * folder, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(folder);
my_app_data_t * app_data = app->app_data;
sprintf(app_data->path, "%s/%s", app_data->path, lv_list_element_get_txt(folder));
app_data->file_cnt = 0;
lv_win_set_title(app->win, app_data->path);
my_sc_data_t * sc_data = app->sc_data;
if(sc_data != NULL) {
lv_label_set_text(sc_data->label, fs_get_last(app_data->path));
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
win_load_file_list(app);
return LV_ACTION_RES_INV;
}
/**
* Called when a file list element is released to show the list of operation on it
* @param file pointer to a file button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_file_action(lv_obj_t * file, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(file);
my_app_data_t * app_data = app->app_data;
my_win_data_t * win_data = app->win_data;
sprintf(app_data->fn, "%s", lv_list_element_get_txt(file));
win_create_list(app);
/*Create the list of operations*/
lv_obj_t * liste;
liste = lv_list_add(win_data->file_list, "U:/icon_left", "Back", win_back_action);
lv_obj_set_free_p(liste, app);
/*Send button*/
liste = lv_list_add(win_data->file_list, NULL, "Send", win_send_rel_action);
lv_obj_set_free_p(liste, app);
lv_btn_set_lpr_action(liste, win_send_lpr_action);
lv_obj_set_free_p(liste, app);
/*Delete button*/
liste = lv_list_add(win_data->file_list, NULL, "Delete", win_del_rel_action);
lv_btn_set_lpr_action(liste, win_del_lpr_action);
lv_obj_set_free_p(liste, app);
return LV_ACTION_RES_INV;
}
/**
* Called when the Back list element is released to when a file chosen to
* go back to the file list from file operation
* @param back pointer to the back button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_INV because the list is deleted in the function
*/
static lv_action_res_t win_back_action(lv_obj_t * up, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(up);
my_app_data_t * app_data = app->app_data;
app_data->file_cnt = 0;
win_load_file_list(app);
return LV_ACTION_RES_INV;
}
/**
* Called when the Send list element is released to send the file
* @param sed pointer to the Up button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the list is NOT deleted in the function
*/
static lv_action_res_t win_send_rel_action(lv_obj_t * send, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(send);
my_app_data_t * app_data = app->app_data;
if(app_data->send_in_prog != 0) {
lv_app_notice_add("File sending\nin progress");
return LV_ACTION_RES_OK;
}
char path_fn[LV_APP_FILES_PATH_MAX_LEN + LV_APP_FILES_FN_MAX_LEN];
sprintf(path_fn, "%s/%s", app_data->path, app_data->fn);
start_send(app, path_fn);
return LV_ACTION_RES_OK;
}
/**
* Called when the Send list element is long pressed to show/hide send settings
* @param send pointer to the Up button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the list is NOT deleted in the function
*/
static lv_action_res_t win_send_lpr_action(lv_obj_t * send, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(send);
my_app_data_t * app_data = app->app_data;
my_win_data_t * win_data = app->win_data;
/*Close the settings if it is opened*/
if(win_data->send_set_h != NULL) {
lv_obj_del(win_data->send_set_h);
win_data->send_set_h = NULL;
lv_dispi_wait_release(dispi);
lv_btn_set_state(send, LV_BTN_STATE_REL);
return LV_ACTION_RES_OK;
}
/*Create the settings*/
lv_btn_set_state(send, LV_BTN_STATE_REL);
lv_rect_set_layout(send, LV_RECT_LAYOUT_COL_L);
/*Create holder for the settings*/
win_data->send_set_h = lv_rect_create(send, NULL);
lv_obj_set_style(win_data->send_set_h, lv_rects_get(LV_RECTS_TRANSP, NULL));
lv_obj_set_click(win_data->send_set_h, false);
lv_rect_set_fit(win_data->send_set_h, true, true);
lv_rect_set_layout(win_data->send_set_h, LV_RECT_LAYOUT_COL_L);
/*Create check boxes*/
lv_obj_t * cb;
/*Send file name check box*/
cb = lv_cb_create(win_data->send_set_h, NULL);
lv_cb_set_text(cb, "Send file name");
lv_obj_set_free_num(cb, SEND_SETTINGS_FN);
lv_obj_set_free_p(cb, app);
lv_btn_set_rel_action(cb, win_send_settings_element_rel_action);
if(app_data->send_fn != 0) lv_btn_set_state(cb, LV_BTN_STATE_TGL_REL);
else lv_btn_set_state(cb, LV_BTN_STATE_REL);
/*Send size check box*/
cb = lv_cb_create(win_data->send_set_h, cb);
lv_cb_set_text(cb, "Send size");
lv_obj_set_free_num(cb, SEND_SETTINGS_SIZE);
if(app_data->send_size != 0) lv_btn_set_state(cb, LV_BTN_STATE_TGL_REL);
else lv_btn_set_state(cb, LV_BTN_STATE_REL);
/*Send CRC check box*/
cb = lv_cb_create(win_data->send_set_h, cb);
lv_cb_set_text(cb, "Send CRC");
lv_obj_set_free_num(cb, SEND_SETTINGS_CRC);
if(app_data->send_crc != 0) lv_btn_set_state(cb, LV_BTN_STATE_TGL_REL);
else lv_btn_set_state(cb, LV_BTN_STATE_REL);
/*Create a text area the type chunk size*/
lv_obj_t * val_set_h;
val_set_h = lv_rect_create(win_data->send_set_h, NULL);
lv_obj_set_style(val_set_h, lv_rects_get(LV_RECTS_TRANSP, NULL));
lv_obj_set_click(val_set_h, false);
lv_rect_set_fit(val_set_h, true, true);
lv_rect_set_layout(val_set_h, LV_RECT_LAYOUT_ROW_M);
lv_obj_t * label;
label = lv_label_create(val_set_h, NULL);
lv_label_set_text(label, "Chunk size");
lv_obj_t * ta;
char buf[32];
ta = lv_ta_create(val_set_h, NULL);
lv_obj_set_style(ta, lv_tas_get(LV_TAS_SIMPLE, NULL));
lv_rect_set_fit(ta, false, true);
lv_obj_set_free_num(ta, SEND_SETTINGS_CHUNK_SIZE);
lv_obj_set_free_p(ta, app);
lv_page_set_rel_action(ta, win_send_settings_element_rel_action);
sprintf(buf, "%d", app_data->chunk_size);
lv_ta_set_text(ta, buf);
/*Create a text area to type the chunk delay*/
val_set_h = lv_rect_create(win_data->send_set_h, val_set_h);
label = lv_label_create(val_set_h, NULL);
lv_label_set_text(label, "Inter-chunk delay");
ta = lv_ta_create(val_set_h, ta);
lv_obj_set_free_num(ta, SEND_SETTINGS_CHUNK_DELAY);
sprintf(buf, "%d", app_data->chunk_delay);
lv_ta_set_text(ta, buf);
return LV_ACTION_RES_OK;
}
/**
* Called when a send settings element is released
* @param element pointer to a chekbox or text area
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the list is NOT deleted in the function
*/
static lv_action_res_t win_send_settings_element_rel_action(lv_obj_t * element, lv_dispi_t * dispi)
{
send_settings_id_t id = lv_obj_get_free_num(element);
lv_app_inst_t * app = lv_obj_get_free_p(element);
my_app_data_t * app_data = app->app_data;
if(id == SEND_SETTINGS_FN) {
app_data->send_fn = lv_btn_get_state(element) == LV_BTN_STATE_REL ? 0 : 1;
} else if(id == SEND_SETTINGS_SIZE) {
app_data->send_size = lv_btn_get_state(element) == LV_BTN_STATE_REL ? 0 : 1;
} else if(id == SEND_SETTINGS_CRC) {
app_data->send_crc = lv_btn_get_state(element) == LV_BTN_STATE_REL ? 0 : 1;
/*TODO CRC sending is not supported yet*/
if(app_data->send_crc != 0) {
lv_app_notice_add("CRC sending is\nnot supported yet");
}
} else if(id == SEND_SETTINGS_CHUNK_SIZE) {
lv_app_kb_open(element, LV_APP_KB_MODE_NUM, send_settings_kb_close_action, send_settings_kb_ok_action);
} else if(id == SEND_SETTINGS_CHUNK_DELAY) {
lv_app_kb_open(element, LV_APP_KB_MODE_NUM, send_settings_kb_close_action, send_settings_kb_ok_action);
}
return LV_ACTION_RES_OK;
}
/**
* Called when the Delete list element is released.
* It will show a notification to long press the Delete button to remove the file
* @param del pointer to the back button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the list is NOT deleted in the function
*/
static lv_action_res_t win_del_rel_action(lv_obj_t * del, lv_dispi_t * dispi)
{
lv_app_notice_add("Press long the Delete button\n"
"to remove the file");
return LV_ACTION_RES_OK;
}
/**
* Called when the Delete list element is long pressed to remove a file
* @param del pointer to the Delete button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the list is NOT deleted in the function
*/
static lv_action_res_t win_del_lpr_action(lv_obj_t * del, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(del);
my_app_data_t * app_data = app->app_data;
char path_fn[LV_APP_FILES_PATH_MAX_LEN + LV_APP_FILES_FN_MAX_LEN];
sprintf(path_fn, "%s/%s", app_data->path, app_data->fn);
fs_res_t res = fs_remove(path_fn);
if(res == FS_RES_OK) lv_app_notice_add("%s deleted", app_data->fn);
else lv_app_notice_add("Can not delete\n%s", app_data->fn);
return LV_ACTION_RES_OK;
}
/**
* Called when a send setting is typed and 'Close' pressed on the App. keyboard.
* The function reverts the original value in the text area.
* @param ta pointer to a text area
*/
static void send_settings_kb_close_action(lv_obj_t * ta)
{
send_settings_id_t id = lv_obj_get_free_num(ta);
lv_app_inst_t * app = lv_obj_get_free_p(ta);
my_app_data_t * app_data = app->app_data;
char buf[32];
buf[0] = '\0';
if(id == SEND_SETTINGS_CHUNK_DELAY) {
sprintf(buf, "%d", app_data->chunk_size);
} else if(id == SEND_SETTINGS_CHUNK_SIZE) {
sprintf(buf, "%d", app_data->chunk_size);
}
lv_ta_set_text(ta, buf);
}
/**
* Called when a send setting is typed and 'Ok' pressed on the App. keyboard.
* The function saves teh new value.
* @param ta pointer to a text area
*/
static void send_settings_kb_ok_action(lv_obj_t * ta)
{
send_settings_id_t id = lv_obj_get_free_num(ta);
lv_app_inst_t * app = lv_obj_get_free_p(ta);
my_app_data_t * app_data = app->app_data;
int num;
sscanf(lv_ta_get_txt(ta), "%d", &num);
if(id == SEND_SETTINGS_CHUNK_DELAY) {
if(num > LV_APP_FILES_CHUNK_MAX_TIME) num = LV_APP_FILES_CHUNK_MAX_TIME;
if(num < LV_APP_FILES_CHUNK_MIN_TIME) num = LV_APP_FILES_CHUNK_MIN_TIME;
app_data->chunk_delay = (uint16_t) num;
} else if(id == SEND_SETTINGS_CHUNK_SIZE) {
if(num > LV_APP_FILES_CHUNK_MAX_SIZE) num = LV_APP_FILES_CHUNK_MAX_SIZE;
if(num < LV_APP_FILES_CHUNK_MIN_SIZE) num = LV_APP_FILES_CHUNK_MIN_SIZE;
app_data->chunk_size= (uint16_t) num;
}
}
/**
* Start the sending of a file
* @param app pointer to a Files application
* @param path path of the file to send
*/
static void start_send(lv_app_inst_t * app, const char * path)
{
my_app_data_t * app_data = app->app_data;
/*Open the file*/
fs_res_t res = fs_open(&app_data->file, path, FS_MODE_RD);
if(res == FS_RES_OK) {
uint32_t rn;
char rd_buf[LV_APP_FILES_CHUNK_MAX_SIZE];
/*Read the first chunk*/
res = fs_read(&app_data->file, rd_buf, app_data->chunk_size, &rn);
if(res == FS_RES_OK) {
app_data->send_in_prog = 1;
/*Send the header*/
if(app_data->send_fn != 0) {
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, app_data->path, strlen(app_data->path));
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, "/", 1);
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, app_data->fn, strlen(app_data->fn));
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, "\n", 1);
}
if(app_data->send_size != 0) {
char buf[64];
uint32_t size;
fs_size(&app_data->file, &size);
sprintf(buf,"%d", (int) size);
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, buf, strlen(buf));
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, "\n", 1);
}
if(app_data->send_crc != 0) {
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, "0x0000", 6);
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, "\n", 1);
}
/*Add an extra \n to separate the header from the file data*/
if(app_data->send_fn != 0 || app_data->send_size != 0 || app_data->send_crc != 0) {
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, "\n", 1);
}
}
}
/*If an error occurred close the file*/
if(res != FS_RES_OK) {
fs_close(&app_data->file);
ptask_set_prio(app_data->send_task, PTASK_PRIO_OFF);
app_data->send_in_prog = 0;
lv_app_notice_add("Can not send\nthe file in Files");
}
/*If no error show notification, start the sender task and refresh the shortcut*/
else {
/*Start the sender task*/
ptask_set_period(app_data->send_task, app_data->chunk_delay);
ptask_reset(app_data->send_task);
ptask_set_prio(app_data->send_task, PTASK_PRIO_HIGH);
lv_app_notice_add("Sending\n%s", fs_get_last(path));
/*Refresh the shortcut with the percentage of the sending*/
if(app->sc_data != NULL) {
my_sc_data_t * sc_data = app->sc_data;
uint32_t size;
fs_size(&app_data->file, &size);
uint32_t pos;
fs_tell(&app_data->file, &pos);
int pct = (uint32_t) (pos * 100) / size;
char buf[256];
sprintf(buf, "Sending\n%d%%", pct);
lv_label_set_text(sc_data->label, buf);
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
}
}
/**
* Periodically send the next chunk of the file
* @param app pointer to a Files application
*/
static void send_task(void * param)
{
lv_app_inst_t * app = param;
my_app_data_t * app_data = app->app_data;
if(app_data->send_in_prog == 0) return;
/*Read a chunk*/
uint32_t rn;
char rd_buf[LV_APP_FILES_CHUNK_MAX_SIZE];
fs_res_t res = fs_read(&app_data->file, rd_buf, app_data->chunk_size, &rn);
if(res == FS_RES_OK) {
app_data->send_in_prog = 1;
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, rd_buf, rn);
}
/*If the read failed close the file and show an error*/
if(res != FS_RES_OK) {
fs_close(&app_data->file);
app_data->send_in_prog = 0;
lv_app_notice_add("Can not send\nthe file in Files");
}
/*If the read was successful*/
else {
my_sc_data_t * sc_data = app->sc_data;
/*If the file is read close it a show a notification*/
if(rn < app_data->chunk_size) {
lv_app_notice_add("File sent");
fs_close(&app_data->file);
app_data->send_in_prog = 0;
/*Refresh the shortut*/
if(sc_data != NULL) {
lv_label_set_text(sc_data->label, fs_get_last(app_data->path));
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
}
/*If the file is not sent yet refresh the shortcut with percentage of sending*/
else {
if(sc_data != NULL) {
uint32_t size;
fs_size(&app_data->file, &size);
uint32_t pos;
fs_tell(&app_data->file, &pos);
uint8_t pct = (uint32_t) (pos * 100) / size;
char buf[256];
sprintf(buf, "Sending\n%d%%", pct);
lv_label_set_text(sc_data->label, buf);
lv_obj_align(sc_data->label, NULL, LV_ALIGN_CENTER, 0, 0);
}
}
}
}
#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_FILES != 0*/

View File

@@ -1,391 +0,0 @@
/**
* @file lv_app_sysmon.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_sysmon.h"
#if LV_APP_ENABLE != 0 && USE_LV_APP_SYSMON != 0
#include <stdio.h>
#include "misc/os/ptask.h"
#include "misc/os/idle.h"
#include "lvgl/lv_objx/lv_chart.h"
#include "lvgl/lv_app/lv_app_util/lv_app_notice.h"
#include "hal/systick/systick.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/*Application specific data for an instance of this application*/
typedef struct
{
}my_app_data_t;
/*Application specific data a window of this application*/
typedef struct
{
lv_obj_t * chart;
cord_t * cpu_dl;
cord_t * mem_dl;
lv_obj_t * label;
}my_win_data_t;
/*Application specific data for a shortcut of this application*/
typedef struct
{
lv_obj_t * pb_cpu;
lv_obj_t * pb_mem;
}my_sc_data_t;
/**********************
* STATIC PROTOTYPES
**********************/
static void my_app_run(lv_app_inst_t * app, void * conf);
static void my_app_close(lv_app_inst_t * app);
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec, lv_app_com_type_t type , const void * data, uint32_t size);
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc);
static void my_sc_close(lv_app_inst_t * app);
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win);
static void my_win_close(lv_app_inst_t * app);
static void sysmon_task(void * param);
static void lv_app_sysmon_refr(void);
/**********************
* STATIC VARIABLES
**********************/
static lv_app_dsc_t my_app_dsc =
{
.name = "Sys. monitor",
.mode = LV_APP_MODE_NONE,
.app_run = my_app_run,
.app_close = my_app_close,
.com_rec = my_com_rec,
.win_open = my_win_open,
.win_close = my_win_close,
.sc_open = my_sc_open,
.sc_close = my_sc_close,
.app_data_size = sizeof(my_app_data_t),
.sc_data_size = sizeof(my_sc_data_t),
.win_data_size = sizeof(my_win_data_t),
};
static uint8_t mem_pct[LV_APP_SYSMON_PNUM];
static uint8_t cpu_pct[LV_APP_SYSMON_PNUM];
static lv_pbs_t cpu_pbs;
static lv_pbs_t mem_pbs;
#if USE_DYN_MEM != 0 && DM_CUSTOM == 0
static dm_mon_t mem_mon;
#endif
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the application
* @return pointer to the application descriptor of this application
*/
const lv_app_dsc_t * lv_app_sysmon_init(void)
{
ptask_create(sysmon_task, LV_APP_SYSMON_REFR_TIME, PTASK_PRIO_LOW, NULL);
memset(mem_pct, 0, sizeof(mem_pct));
memset(cpu_pct, 0, sizeof(cpu_pct));
/*Create progress bar styles for the shortcut*/
lv_pbs_get(LV_PBS_DEF, &cpu_pbs);
cpu_pbs.bg.gcolor = COLOR_MAKE(0xFF, 0xE0, 0xE0);
cpu_pbs.bg.objs.color = COLOR_MAKE(0xFF, 0xD0, 0xD0);
cpu_pbs.bg.bcolor = COLOR_MAKE(0xFF, 0x20, 0x20);
cpu_pbs.bg.bwidth = 1 * LV_DOWNSCALE;
cpu_pbs.bar.gcolor = COLOR_MARRON;
cpu_pbs.bar.objs.color = COLOR_RED;
cpu_pbs.bar.bwidth = 0;
cpu_pbs.label.objs.color = COLOR_MAKE(0x40, 0x00, 0x00);
cpu_pbs.label.font = LV_APP_FONT_MEDIUM;
cpu_pbs.label.line_space = 0;
cpu_pbs.label.mid = 1;
memcpy(&mem_pbs, &cpu_pbs, sizeof(mem_pbs));
mem_pbs.bg.gcolor = COLOR_MAKE(0xD0, 0xFF, 0xD0);
mem_pbs.bg.objs.color = COLOR_MAKE(0xE0, 0xFF, 0xE0);
mem_pbs.bg.bcolor = COLOR_MAKE(0x20, 0xFF, 0x20);
mem_pbs.bar.gcolor = COLOR_GREEN;
mem_pbs.bar.objs.color = COLOR_LIME;
mem_pbs.label.objs.color = COLOR_MAKE(0x00, 0x40, 0x00);
return &my_app_dsc;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Run an application according to 'app_dsc'
* @param app_dsc pointer to an application descriptor
* @param conf pointer to a lv_app_sysmon_conf_t structure with configuration data or NULL if unused
* @return pointer to the opened application or NULL if any error occurred
*/
static void my_app_run(lv_app_inst_t * app, void * conf)
{
}
/**
* Close a running application.
* Close the Window and the Shortcut too if opened.
* Free all the allocated memory by this application.
* @param app pointer to an application
*/
static void my_app_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_app_data'*/
}
/**
* Read the data have been sent to this application
* @param app_send pointer to an application which sent the message
* @param app_rec pointer to an application which is receiving the message
* @param type type of data from 'lv_app_com_type_t' enum
* @param data pointer to the sent data
* @param size length of 'data' in bytes
*/
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec,
lv_app_com_type_t type , const void * data, uint32_t size)
{
}
/**
* Open a shortcut for an application
* @param app pointer to an application
* @param sc pointer to an object where the application
* can create content of the shortcut
*/
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc)
{
my_sc_data_t * sc_data = app->sc_data;
cord_t w = lv_obj_get_width(sc) / 5;
/*Create 2 progress bars fr the CPU and the Memory*/
sc_data->pb_cpu = lv_pb_create(sc, NULL);
lv_obj_set_size(sc_data->pb_cpu, w, 5 * lv_obj_get_height(sc) / 8);
lv_obj_align(sc_data->pb_cpu, NULL, LV_ALIGN_IN_BOTTOM_LEFT, w, - lv_obj_get_height(sc) / 8);
lv_obj_set_style(sc_data->pb_cpu, &cpu_pbs);
lv_obj_set_click(sc_data->pb_cpu, false);
lv_pb_set_min_max_value(sc_data->pb_cpu, 0, 100);
lv_pb_set_format_str(sc_data->pb_cpu, "C\nP\nU");
sc_data->pb_mem = lv_pb_create(sc, sc_data->pb_cpu);
lv_obj_align(sc_data->pb_mem, sc_data->pb_cpu, LV_ALIGN_OUT_RIGHT_MID, w, 0);
lv_obj_set_style(sc_data->pb_mem, &mem_pbs);
lv_pb_set_format_str(sc_data->pb_mem, "M\ne\nm");
lv_app_sysmon_refr();
}
/**
* Close the shortcut of an application
* @param app pointer to an application
*/
static void my_sc_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_sc_data'*/
}
/**
* Open the application in a window
* @param app pointer to an application
* @param win pointer to a window object where
* the application can create content
*/
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win)
{
my_win_data_t * win_data = app->win_data;
lv_app_style_t * app_style = lv_app_style_get();
/*Create a chart with two data lines*/
win_data->chart = lv_chart_create(win, NULL);
lv_obj_set_size(win_data->chart, LV_HOR_RES / 2, LV_VER_RES / 2);
lv_chart_set_pnum(win_data->chart, LV_APP_SYSMON_PNUM);
lv_chart_set_range(win_data->chart, 0, 100);
lv_chart_set_type(win_data->chart, LV_CHART_LINE);
win_data->cpu_dl = lv_chart_add_dataline(win_data->chart);
win_data->mem_dl = lv_chart_add_dataline(win_data->chart);
uint16_t i;
for(i = 0; i < LV_APP_SYSMON_PNUM; i ++) {
win_data->cpu_dl[i] = cpu_pct[i];
win_data->mem_dl[i] = mem_pct[i];
}
/*Create a label for the details of Memory and CPU usage*/
cord_t opad = app_style->win_style.pages.scrl_rects.opad;
win_data->label = lv_label_create(win, NULL);
lv_obj_align(win_data->label, win_data->chart, LV_ALIGN_OUT_RIGHT_MID, opad, 0);
lv_obj_set_style(win_data->label, &app_style->win_txt_style);
lv_app_sysmon_refr();
}
/**
* Close the window of an application
* @param app pointer to an application
*/
static void my_win_close(lv_app_inst_t * app)
{
}
/*--------------------
* OTHER FUNCTIONS
---------------------*/
/**
* Called periodically to monitor the CPU and memory usage.
* It refreshes the shortcuts and windows and also add notifications if there is any problem.
* @param param unused
*/
static void sysmon_task(void * param)
{
/*Shift out the oldest data*/
uint16_t i;
for(i = 1; i < LV_APP_SYSMON_PNUM; i++) {
mem_pct[i - 1] = mem_pct[i];
cpu_pct[i - 1] = cpu_pct[i];
}
/*Get CPU and memory information */
uint8_t cpu_busy = 0;
#if USE_IDLE != 0
cpu_busy = 100 - idle_get();
#endif
uint8_t mem_used_pct = 0;
#if USE_DYN_MEM != 0 && DM_CUSTOM == 0
dm_monitor(&mem_mon);
mem_used_pct = mem_mon.pct_used;
#endif
/*Add the CPU and memory data*/
cpu_pct[LV_APP_SYSMON_PNUM - 1] = cpu_busy;
mem_pct[LV_APP_SYSMON_PNUM - 1] = mem_used_pct;
/*Refresh the shortcuts and windows*/
lv_app_sysmon_refr();
#if USE_DYN_MEM != 0 && DM_CUSTOM == 0
/*Handle periodic defrag. if enabled*/
#if LV_APP_SYSMON_DEFRAG_PERIOD != 0
static uint32_t last_defrag = 0;
if(systick_elaps(last_defrag) > LV_APP_SYSMON_DEFRAG_PERIOD) {
dm_defrag();
last_defrag = systick_get();
}
#endif
/*Add notifications if something is critical*/
static bool mem_warn_report = false;
if(mem_mon.size_free < LV_APP_SYSMON_MEM_WARN && mem_warn_report == false) {
mem_warn_report = true;
lv_obj_t * not = lv_app_notice_add("Critically low memory");
lv_obj_set_style(not, lv_mboxs_get(LV_MBOXS_WARN, NULL));
}
if(mem_mon.size_free > LV_APP_SYSMON_MEM_WARN) mem_warn_report = false;
static bool frag_warn_report = false;
if(mem_mon.pct_frag > LV_APP_SYSMON_FRAG_WARN) {
if(frag_warn_report == false) {
frag_warn_report = true;
lv_obj_t * not =lv_app_notice_add("Critical memory\nfragmentation");
lv_obj_set_style(not, lv_mboxs_get(LV_MBOXS_WARN, NULL));
dm_defrag(); /*Defrag. if the fragmentation is critical*/
}
}
if(mem_mon.pct_frag < LV_APP_SYSMON_FRAG_WARN) frag_warn_report = false;
#endif
}
/**
* Refresh the shortcuts and windows.
*/
static void lv_app_sysmon_refr(void)
{
char buf_long[256];
char buf_short[128];
#if USE_IDLE != 0
sprintf(buf_long, "CPU: %d %%\n\n", cpu_pct[LV_APP_SYSMON_PNUM - 1]);
sprintf(buf_short, "CPU: %d %%\n", cpu_pct[LV_APP_SYSMON_PNUM - 1]);
#else
strcpy(buf_long, "CPU: N/A\n\n");
strcpy(buf_short, "CPU: N/A\n");
#endif
#if USE_DYN_MEM != 0 && DM_CUSTOM == 0
sprintf(buf_long, "%sMEMORY: %d %%\nTotal: %d bytes\nUsed: %d bytes\nFree: %d bytes\nFrag: %d %%",
buf_long,
mem_pct[LV_APP_SYSMON_PNUM - 1],
mem_mon.size_total,
mem_mon.size_total - mem_mon.size_free, mem_mon.size_free, mem_mon.pct_frag);
sprintf(buf_short, "%sMem: %d %%\nFrag: %d %%\n",
buf_short, mem_pct[LV_APP_SYSMON_PNUM - 1], mem_mon.pct_frag);
#else
sprintf(buf_long, "%sMEMORY: N/A", buf_long);
sprintf(buf_short, "%sMem: N/A\nFrag: N/A", buf_short);
#endif
lv_app_style_t * app_style = lv_app_style_get();
cord_t opad = app_style->win_style.pages.scrl_rects.opad;
lv_app_inst_t * app;
app = lv_app_get_next(NULL, &my_app_dsc);
while(app != NULL) {
/*Refresh the windows*/
my_win_data_t * win_data = app->win_data;
if(win_data != NULL) {
lv_label_set_text(win_data->label, buf_long);
lv_obj_align(win_data->label, win_data->chart, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
lv_chart_set_next(win_data->chart, win_data->mem_dl, mem_pct[LV_APP_SYSMON_PNUM - 1]);
lv_chart_set_next(win_data->chart, win_data->cpu_dl, cpu_pct[LV_APP_SYSMON_PNUM - 1]);
}
/*Refresh the shortcut*/
my_sc_data_t * sc_data = app->sc_data;
if(sc_data != NULL) {
lv_pb_set_value(sc_data->pb_cpu, cpu_pct[LV_APP_SYSMON_PNUM - 1]);
lv_pb_set_value(sc_data->pb_mem, mem_pct[LV_APP_SYSMON_PNUM - 1]);
}
lv_app_com_send(app, LV_APP_COM_TYPE_CHAR, buf_short, strlen(buf_short));
app = lv_app_get_next(app, &my_app_dsc);
}
}
#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_SYSMON != 0*/

View File

@@ -1,446 +0,0 @@
/**
* @file lv_app_terminal.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_app_terminal.h"
#if LV_APP_ENABLE != 0 && USE_LV_APP_TERMINAL != 0
#include "lvgl/lv_app/lv_app_util/lv_app_kb.h"
#include <stdio.h>
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/*Application specific data for an instance of this application*/
typedef struct
{
char txt[LV_APP_TERMINAL_LENGTH + 1];
lv_app_com_type_t com_type;
lv_app_inst_t * last_sender;
}my_app_data_t;
/*Application specific data a window of this application*/
typedef struct
{
lv_obj_t * label;
lv_obj_t * ta;
lv_obj_t * com_type_btn;
lv_obj_t * clear_btn;
}my_win_data_t;
/*Application specific data for a shortcut of this application*/
typedef struct
{
lv_obj_t * label;
}my_sc_data_t;
/**********************
* STATIC PROTOTYPES
**********************/
static void my_app_run(lv_app_inst_t * app, void * conf);
static void my_app_close(lv_app_inst_t * app);
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec, lv_app_com_type_t type , const void * data, uint32_t size);
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc);
static void my_sc_close(lv_app_inst_t * app);
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win);
static void my_win_close(lv_app_inst_t * app);
static void add_data(lv_app_inst_t * app, const void * data, uint16_t data_len);
static lv_action_res_t win_ta_rel_action(lv_obj_t * ta, lv_dispi_t * dispi);
static lv_action_res_t win_comch_rel_action(lv_obj_t * btn, lv_dispi_t * dispi);
static lv_action_res_t win_clear_rel_action(lv_obj_t * btn, lv_dispi_t * dispi);
static void win_ta_kb_ok_action(lv_obj_t * ta);
/**********************
* STATIC VARIABLES
**********************/
static lv_app_dsc_t my_app_dsc =
{
.name = "Terminal",
.mode = LV_APP_MODE_NONE,
.app_run = my_app_run,
.app_close = my_app_close,
.com_rec = my_com_rec,
.win_open = my_win_open,
.win_close = my_win_close,
.sc_open = my_sc_open,
.sc_close = my_sc_close,
.app_data_size = sizeof(my_app_data_t),
.sc_data_size = sizeof(my_sc_data_t),
.win_data_size = sizeof(my_win_data_t),
};
const char * com_type_txt [LV_APP_COM_TYPE_NUM];
lv_objs_t sc_txt_bgs;
lv_labels_t sc_txts;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the application
* @return pointer to the application descriptor of this application
*/
const lv_app_dsc_t * lv_app_terminal_init(void)
{
com_type_txt[LV_APP_COM_TYPE_INT] = "Ch: Num";
com_type_txt[LV_APP_COM_TYPE_CHAR] = "Ch: Chars";
com_type_txt[LV_APP_COM_TYPE_LOG] = "Ch: Log";
com_type_txt[LV_APP_COM_TYPE_INV] = "Ch: None";
lv_app_style_t * app_style = lv_app_style_get();
memcpy(&sc_txts, &app_style->sc_txt_style, sizeof(lv_labels_t));
sc_txts.line_space = 0;
sc_txts.letter_space = 0;
sc_txts.mid = 0;
sc_txts.objs.color = COLOR_WHITE;
lv_objs_get(LV_OBJS_DEF, &sc_txt_bgs);
sc_txt_bgs.color = COLOR_MAKE(0x20, 0x20, 0x20);
return &my_app_dsc;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Run an application according to 'app_dsc'
* @param app_dsc pointer to an application descriptor
* @param conf pointer to a lv_app_example_conf_t structure with configuration data or NULL if unused
* @return pointer to the opened application or NULL if any error occurred
*/
static void my_app_run(lv_app_inst_t * app, void * conf)
{
/*Initialize the application*/
my_app_data_t * app_data = app->app_data;
app_data->com_type = LV_APP_COM_TYPE_CHAR;
app_data->last_sender = NULL;
memset(app_data->txt, 0, sizeof(app_data->txt));
}
/**
* Close a running application.
* Close the Window and the Shortcut too if opened.
* Free all the allocated memory by this application.
* @param app pointer to an application
*/
static void my_app_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_app_data'*/
}
/**
* Read the data have been sent to this applicationstring
* @param app_send pointer to an application which sent the message
* @param app_rec pointer to an application which is receiving the message
* @param type type of data from 'lv_app_com_type_t' enum
* @param data pointer to the sent data
* @param size length of 'data' in bytes
*/
static void my_com_rec(lv_app_inst_t * app_send, lv_app_inst_t * app_rec,
lv_app_com_type_t type , const void * data, uint32_t size)
{
my_app_data_t * app_data = app_rec->app_data;
/*Add the recevied data if the type is matches*/
if(type == app_data->com_type) {
/*Insert the name of the sender application if it is not the last*/
if(app_data->last_sender != app_send) {
if(app_data->txt[0] != '\0') add_data(app_rec, "\n", 1);
add_data(app_rec, "@", 1);
add_data(app_rec, app_send->name, strlen(app_send->name));
add_data(app_rec, "\n", 1);
}
add_data(app_rec, data, size);
}
app_data->last_sender = app_send;
}
/**
* Open a shortcut for an application
* @param app pointer to an application
* @param sc pointer to an object where the application
* can create content of the shortcut
*/
static void my_sc_open(lv_app_inst_t * app, lv_obj_t * sc)
{
my_sc_data_t * sc_data = app->sc_data;
my_app_data_t * app_data = app->app_data;
/*Create a dark background*/
lv_obj_t * txt_bg = lv_obj_create(sc, NULL);
lv_obj_set_size(txt_bg, 7 * LV_APP_SC_WIDTH / 8 , app->sc->cords.y2 - app->sc_title->cords.y2 - 10 * LV_DOWNSCALE);
lv_obj_set_style(txt_bg, &sc_txt_bgs);
lv_obj_align(txt_bg, app->sc_title, LV_ALIGN_OUT_BOTTOM_MID, 0, 3 * LV_DOWNSCALE);
lv_obj_set_click(txt_bg, false);
/*Add a text with the text of the terminal*/
sc_data->label = lv_label_create(txt_bg, NULL);
lv_obj_set_style(sc_data->label, &sc_txts);
lv_label_set_long_mode(sc_data->label, LV_LABEL_LONG_BREAK);
lv_obj_set_width(sc_data->label, lv_obj_get_width(txt_bg) - LV_APP_SC_WIDTH / 8);
lv_label_set_text_static(sc_data->label, app_data->txt);
lv_obj_align(sc_data->label, txt_bg, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
}
/**
* Close the shortcut of an application
* @param app pointer to an application
*/
static void my_sc_close(lv_app_inst_t * app)
{
/*No dynamically allocated data in 'my_sc_data'*/
}
/**
* Open the application in a window
* @param app pointer to an application
* @param win pointer to a window object where
* the application can create content
*/
static void my_win_open(lv_app_inst_t * app, lv_obj_t * win)
{
my_win_data_t * win_data = app->win_data;
my_app_data_t * app_data = app->app_data;
lv_app_style_t * app_style = lv_app_style_get();
cord_t opad = app_style->win_style.pages.scrl_rects.opad;
/*Create a label for the text of the terminal*/
win_data->label = lv_label_create(win, NULL);
lv_label_set_long_mode(win_data->label, LV_LABEL_LONG_BREAK);
lv_obj_set_width(win_data->label, LV_HOR_RES -
2 * (app_style->win_style.pages.bg_rects.hpad +
app_style->win_style.pages.scrl_rects.hpad));
lv_obj_set_style(win_data->label, &app_style->win_txt_style);
lv_label_set_text_static(win_data->label, app_data->txt); /*Use the app. data text directly*/
/*Create a text area. Text can be added to the terminal from here by app. keyboard.*/
win_data->ta = lv_ta_create(win, NULL);
lv_obj_set_size(win_data->ta, LV_HOR_RES / 2, LV_VER_RES / 4);
lv_obj_set_free_p(win_data->ta, app);
lv_page_set_rel_action(win_data->ta, win_ta_rel_action);
lv_ta_set_text(win_data->ta, "");
lv_obj_set_style(win_data->ta, lv_tas_get(LV_TAS_DEF, NULL));
lv_obj_align(win_data->ta, win_data->label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, opad);
/*Create a button to set the communication type (char, integer etc.)*/
win_data->com_type_btn = lv_btn_create(win, NULL);
lv_rect_set_fit(win_data->com_type_btn, true, true);
lv_obj_set_free_p(win_data->com_type_btn, app);
lv_btn_set_rel_action(win_data->com_type_btn, win_comch_rel_action);
lv_obj_t * btn_label = lv_label_create(win_data->com_type_btn, NULL);
lv_obj_set_style(btn_label, lv_labels_get(LV_LABELS_BTN, NULL));
lv_label_set_text(btn_label, com_type_txt[app_data->com_type]);
lv_obj_align(win_data->com_type_btn, win_data->ta, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
/*Create a clear button*/
win_data->clear_btn = lv_btn_create(win, win_data->com_type_btn);
lv_btn_set_rel_action(win_data->clear_btn, win_clear_rel_action);
btn_label = lv_label_create(win_data->clear_btn, NULL);
lv_obj_set_style(btn_label, lv_labels_get(LV_LABELS_BTN, NULL));
lv_label_set_text(btn_label, "Clear");
lv_obj_align(win_data->clear_btn, win_data->com_type_btn, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
/*Align the window to see the text area on the bottom*/
lv_obj_align(lv_page_get_scrl(app->win), NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0,
- app_style->win_style.pages.scrl_rects.vpad);
}
/**
* Close the window of an application
* @param app pointer to an application
*/
static void my_win_close(lv_app_inst_t * app)
{
}
/*--------------------
* OTHER FUNCTIONS
---------------------*/
/**
* Called when the Text area is released to open the app. keybard
* @param ta pointer to the text area
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the text area is not deleted
*/
static lv_action_res_t win_ta_rel_action(lv_obj_t * ta, lv_dispi_t * dispi)
{
lv_app_kb_open(ta, LV_APP_KB_MODE_TXT, NULL, win_ta_kb_ok_action);
return LV_ACTION_RES_OK;
}
/**
* Called when the communication type button is released to change the type
* @param btn pointer to the comm. type button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the button is not deleted
*/
static lv_action_res_t win_comch_rel_action(lv_obj_t * btn, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(btn);
my_app_data_t * app_data = app->app_data;
my_win_data_t * win_data = app->win_data;
if(app_data->com_type == LV_APP_COM_TYPE_CHAR) app_data->com_type = LV_APP_COM_TYPE_LOG;
else if(app_data->com_type == LV_APP_COM_TYPE_LOG) app_data->com_type = LV_APP_COM_TYPE_INT;
else if(app_data->com_type == LV_APP_COM_TYPE_INT) app_data->com_type = LV_APP_COM_TYPE_INV;
else app_data->com_type = LV_APP_COM_TYPE_CHAR;
lv_label_set_text(lv_obj_get_child(win_data->com_type_btn, NULL), com_type_txt[app_data->com_type]);
return LV_ACTION_RES_OK;
}
/**
* Called when the Clear button is released to clear the ex od the terminal
* @param btn pointer to the clear button
* @param dispi pointer to the caller display input
* @return LV_ACTION_RES_OK because the button is not deleted
*/
static lv_action_res_t win_clear_rel_action(lv_obj_t * btn, lv_dispi_t * dispi)
{
lv_app_inst_t * app = lv_obj_get_free_p(btn);
my_app_data_t * app_data = app->app_data;
my_win_data_t * win_data = app->win_data;
my_sc_data_t * sc_data = app->sc_data;
app_data->txt[0] = '\0';
if(sc_data != NULL) {
lv_label_set_text_static(sc_data->label, app_data->txt);
lv_obj_align(sc_data->label, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0);
}
if(win_data != NULL) {
lv_app_style_t * app_style =lv_app_style_get();
cord_t opad = app_style->win_style.pages.scrl_rects.opad;
lv_label_set_text_static(win_data->label, app_data->txt);
lv_obj_align(win_data->ta, win_data->label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, opad);
lv_obj_align(win_data->com_type_btn, win_data->ta, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
lv_obj_align(win_data->clear_btn, win_data->com_type_btn, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
lv_obj_align(lv_page_get_scrl(app->win), NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0,
- app_style->win_style.pages.scrl_rects.vpad);
}
return LV_ACTION_RES_OK;
}
/**
* Called when the 'Ok' button of the keyboard in the window
* is pressed to write to the Terminal
* @param ta pointer to the Text area in the window
*/
static void win_ta_kb_ok_action(lv_obj_t * ta)
{
lv_app_inst_t * app = lv_obj_get_free_p(ta);
my_app_data_t * app_data = app->app_data;
const char * ta_txt = lv_ta_get_txt(ta);
uint32_t ta_txt_len = strlen(ta_txt);
if(app_data->txt[0] != '\0') add_data(app, "\n", 1);
add_data(app, ">", 1);
add_data(app, ta_txt, ta_txt_len);
lv_app_com_send(app, app_data->com_type, ta_txt, ta_txt_len);
lv_ta_set_text(ta, "");
}
/**
* Add data to the terminal
* @param app pointer to a Terminal application
* @param data pointer to the data
* @param data_len length of 'data' in bytes
*/
static void add_data(lv_app_inst_t * app, const void * data, uint16_t data_len)
{
my_app_data_t * app_data = app->app_data;
uint16_t old_len = strlen(app_data->txt);
const char * txt = data;
/*IF the data is longer then the terminal ax size show the last part of data*/
if(data_len > LV_APP_TERMINAL_LENGTH) {
txt += (data_len - LV_APP_TERMINAL_LENGTH);
data_len = LV_APP_TERMINAL_LENGTH;
old_len = 0;
}
/*If the text become too long 'forget' the oldest lines*/
else if(old_len + data_len > LV_APP_TERMINAL_LENGTH) {
uint16_t new_start;
for(new_start = 0; new_start < old_len; new_start++) {
if(app_data->txt[new_start] == '\n') {
/*If there is enough space break*/
if(new_start >= data_len) {
/*Ignore line breaks*/
while(app_data->txt[new_start] == '\n' || app_data->txt[new_start] == '\r') new_start++;
break;
}
}
}
/* If it wasn't able to make enough space on line breaks
* simply forget the oldest characters*/
if(new_start == old_len) {
new_start = old_len - (LV_APP_TERMINAL_LENGTH - data_len);
}
/*Move the remaining text to the beginning*/
uint16_t j;
for(j = new_start; j < old_len; j++) {
app_data->txt[j - new_start] = app_data->txt[j];
}
old_len = old_len - new_start;
app_data->txt[old_len] = '\0';
}
memcpy(&app_data->txt[old_len], txt, data_len);
app_data->txt[old_len + data_len] = '\0';
my_win_data_t * win_data = app->win_data;
my_sc_data_t * sc_data = app->sc_data;
lv_app_style_t * app_style = lv_app_style_get();
if(win_data != NULL) {
cord_t opad = app_style->win_style.pages.scrl_rects.opad;
lv_label_set_text_static(win_data->label, app_data->txt);
lv_obj_align(win_data->ta, win_data->label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, opad);
lv_obj_align(win_data->com_type_btn, win_data->ta, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
lv_obj_align(win_data->clear_btn, win_data->com_type_btn, LV_ALIGN_OUT_RIGHT_TOP, opad, 0);
lv_obj_align(lv_page_get_scrl(app->win), NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0,
- app_style->win_style.pages.scrl_rects.vpad);
}
/*Set the last line on the shortcut*/
if(sc_data != NULL) {
lv_label_set_text_static(sc_data->label, app_data->txt);
lv_obj_align(sc_data->label, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0);
}
}
#endif /*LV_APP_ENABLE != 0 && USE_LV_APP_TERMINAL != 0*/

View File

@@ -1,232 +0,0 @@
/**
* @file lv_conf.h
*
*/
#if 0 /*Remove this to enable the content (Delete the last #endif too!)*/
#ifndef LV_CONF_H
#define LV_CONF_H
/*===================
Graphical settings
*=====================*/
/* Horizontal and vertical resolution of the library.
* Screen resolution multiplied by LV_DOWN_SCALE*/
#define LV_HOR_RES (480 * LV_DOWNSCALE)
#define LV_VER_RES (320 * LV_DOWNSCALE)
/* Buffered rendering: >= LV_DOWNSCALE * LV_HOR_RES or 0 to disable buffering*/
#define LV_VDB_SIZE (LV_HOR_RES * (LV_VER_RES / 20))
/* Enable antialaiassing
* If enabled everything will half-sized
* Use LV_DOWNSCALE to compensate
* the down scaling effect of antialiassing*/
#define LV_ANTIALIAS 1
/*Set the downscaling value*/
#if LV_ANTIALIAS == 0
#define LV_DOWNSCALE 1
#else
#define LV_DOWNSCALE 2
#endif
#define LV_REFR_PERIOD 40 /*Screen refresh period in milliseconds*/
#define LV_INV_FIFO_SIZE 32 /*The average number of objects on a screen */
/*=================
Misc. setting
*=================*/
/*Display Input settings*/
#define LV_DISPI_READ_PERIOD 50 /*Input device read period milliseconds*/
#define LV_DISPI_TP_MARKER 0 /*Mark the pressed points*/
#define LV_DISPI_DRAG_LIMIT 10 /*Drag threshold in pixels */
#define LV_DISPI_DRAG_THROW 20 /*Drag throw slow-down in [%]. Greater value means faster slow-down */
#define LV_DISPI_LONG_PRESS_TIME 400 /*Long press time in milliseconds*/
#define LV_DISPI_LONG_PRESS_REP_TIME 100 /*Repeated trigger period in long press [ms] */
/*Coordinates*/
#define LV_CORD_TYPE int16_t /*Coordinate type*/
#define LV_CORD_MAX (32000)
#define LV_CORD_MIN (-32000)
/*Fonts and texts*/
#define USE_FONT_DEJAVU_8 1
#define USE_FONT_DEJAVU_10 1
#define USE_FONT_DEJAVU_14 1
#define USE_FONT_DEJAVU_20 1
#define USE_FONT_DEJAVU_30 1
#define USE_FONT_DEJAVU_40 1
#define USE_FONT_DEJAVU_60 1
#define USE_FONT_DEJAVU_80 1
#define USE_FONT_SYMBOL_30 1
#define USE_FONT_SYMBOL_60 1
#define LV_FONT_DEFAULT FONT_DEJAVU_30 /*Always set a default font*/
#define LV_TXT_BREAK_CHARS " ,.;-" /*Can break texts on these chars*/
/*lv_obj (base object) settings*/
#define LV_OBJ_FREE_P 1 /*Enable the free pointer attribute*/
#define LV_OBJ_DEF_SCR_COLOR COLOR_SILVER /*Default screen color*/
/*Others*/
#define LV_COLOR_TRANSP COLOR_LIME
/*==================
* LV OBJ X USAGE
* ================*/
/*Rectangle (dependencies: -*/
#define USE_LV_RECT 1
/*Label (dependencies: -*/
#define USE_LV_LABEL 1
#if USE_LV_LABEL != 0
#define LV_LABEL_SCROLL_SPEED (25 * LV_DOWNSCALE) /*Hor, or ver. scroll speed (px/sec) in 'LV_LABEL_LONG_SCROLL' mode*/
#define LV_LABEL_SCROLL_SPEED_VER (10 * LV_DOWNSCALE) /*Ver. scroll speed if hor. scroll is applied too*/
#define LV_LABEL_SCROLL_PLAYBACK_PAUSE 500 /*Wait before the scroll turns back in ms*/
#define LV_LABEL_SCROLL_REPEAT_PAUSE 500 /*Wait before the scroll begins again in ms*/
#endif
/*Button (dependencies: lv_rect*/
#define USE_LV_BTN 1
/*Line (dependencies: -*/
#define USE_LV_LINE 1
/*Image (dependencies: lv_label (if symbols are enabled) from misc: FSINT, UFS)*/
#define USE_LV_IMG 1
#if USE_LV_IMG != 0
#define LV_IMG_DEF_WALLPAPER img_square_x2 /*Comment this line to NOT use wallpaper*/
/* 1: enables to interpret the file names as symbol name
* from symbol_def.h if they begin with a lower case letter.
* (driver letters are always upper case)*/
#define LV_IMG_ENABLE_SYMBOLS 1
#if LV_IMG_ENABLE_SYMBOLS != 0
#define LV_IMG_DEF_SYMBOL_FONT FONT_SYMBOL_30
#endif /*LV_IMG_ENABLE_SYMBOLS*/
#endif /*USE_LV_IMG*/
/*Page (dependencies: lv_rect)*/
#define USE_LV_PAGE 1
#if USE_LV_PAGE != 0
#define LV_PAGE_ANIM_FOCUS_TIME 300 /*List focus animation time [ms] (0: turn off the animation)*/
#endif
/*List (dependencies: lv_btn, lv_label, lv_img)*/
#define USE_LV_LIST 1
/*Check box (dependencies: lv_btn, lv_label)*/
#define USE_LV_CB 1
/*Progress bar (dependencies: lv_rect, lv_label)*/
#define USE_LV_PB 1
/*LED (dependencies: lv_rect)*/
#define USE_LV_LED 1
/*Chart (dependencies: lv_rect, lv_line)*/
#define USE_LV_CHART 1
/*Text area (dependencies: lv_label, lv_page)*/
#define USE_LV_TA 1
#if USE_LV_TA != 0
#define LV_TA_MAX_LENGTH 256
#define LV_TA_CUR_BLINK_TIME 400 /*ms*/
#endif
/*Button matrix (dependencies: lv_rect, lv_label)*/
#define USE_LV_BTNM 1
/*Window (dependencies: lv_rect, lv_btn, lv_label, lv_img, lv_page)*/
#define USE_LV_WIN 1
/*Message box (dependencies: lv_rect, lv_btn, lv_label)*/
#define USE_LV_MBOX 1
#if USE_LV_MBOX != 0
#define LV_MBOX_ANIM_TIME 250 /*How fast animate out the message box in auto close. 0: no animation [ms]*/
#endif
/*Gauge (dependencies: lv_rect, lv_label, lv_line, misc: trigo)*/
#define USE_LV_GAUGE 1
/*==================
* LV APP SETTINGS
* =================*/
/*Enable the application system*/
#define LV_APP_ENABLE 1
#if LV_APP_ENABLE != 0
#define LV_APP_SC_WIDTH (LV_HOR_RES / 4) /*Shortcut width*/
#define LV_APP_SC_HEIGHT (LV_VER_RES / 3) /*Shortcut height*/
#define LV_APP_FONT_SMALL FONT_DEJAVU_20
#define LV_APP_FONT_MEDIUM LV_FONT_DEFAULT
#define LV_APP_FONT_LARGE FONT_DEJAVU_40
/* Internal icons:
* 0: Do not use internal icons (img_close, img_add etc. icons have to be provided)
* 1: Use simple sized icons
* 2: Use double sized icons*/
#define LV_APP_USE_INTERNAL_ICONS 2
/*Enable or disable the internal icons individually*/
#if LV_APP_USE_INTERNAL_ICONS != 0
#define USE_IMG_CLOSE 1
#define USE_IMG_DOWN 1
#define USE_IMG_DRIVER 1
#define USE_IMG_FILE 1
#define USE_IMG_FOLDER 1
#define USE_IMG_LEFT 1
#define USE_IMG_OK 1
#define USE_IMG_RIGHT 1
#define USE_IMG_UP 1
#endif
/*Animation settings*/
#define LV_APP_EFFECT_OPA 1 /*Enable the opacity in the application style (can be modified)*/
#define LV_APP_EFFECT_ANIM 1 /*Enable the animation of the applications*/
#define LV_APP_EFFECT_OPA_ANIM 1 /*Enable the using opacity in the application animations*/
#define LV_APP_ANIM_WIN 200 /*Animation time in milliseconds (0: turn off animation)*/
#define LV_APP_ANIM_SC 200 /*Animation time in milliseconds (0: turn off animation)*/
#define LV_APP_ANIM_NOTICE 300 /*Obsolete, use LV_MBOX_ANIM. */
/* App. utility settings */
#define LV_APP_NOTICE_SHOW_TIME 4000 /*Notices will be shown for this time [ms]*/
#define LV_APP_NOTICE_MAX_LEN 256 /*Max. number of characters on a notice*/
/*==================
* LV APP X USAGE
* ================*/
#define USE_LV_APP_EXAMPLE 1
#define USE_LV_APP_SYSMON 1
#if USE_LV_APP_SYSMON != 0
#define LV_APP_SYSMON_REFR_TIME 500 /*[ms]*/
#define LV_APP_SYSMON_PNUM 64
#define LV_APP_SYSMON_MEM_WARN (4 * 1024)
#define LV_APP_SYSMON_FRAG_WARN (70) /*[%]*/
#define LV_APP_SYSMON_DEFRAG_PERIOD (5000) /*[%]*/
#endif /*USE_LV_APP_SYSMON != 0*/
#define USE_LV_APP_TERMINAL 1
#if USE_LV_APP_TERMINAL != 0
#define LV_APP_TERMINAL_LENGTH 512 /*Memory of the terminal*/
#endif /*USE_LV_APP_TERMINAL != 0*/
#define USE_LV_APP_FILES 1
#if USE_LV_APP_FILES != 0
#define LV_APP_FILES_PAGE_SIZE 8 /*Max. number of files/folder on a page*/
#define LV_APP_FILES_FN_MAX_LEN 128
#define LV_APP_FILES_PATH_MAX_LEN 256
#define LV_APP_FILES_CHUNK_DEF_SIZE 256
#define LV_APP_FILES_CHUNK_DEF_TIME 100
#define LV_APP_FILES_CHUNK_MAX_SIZE 1024
#endif /*USE_LV_APP_FILES != 0*/
#endif /*LV_APP_ENABLE != 0*/
#endif /*LV_CONF_H*/
#endif /*Remove this to enable the content*/

591
lv_conf_template.h Normal file
View File

@@ -0,0 +1,591 @@
/**
* @file lv_conf.h
*
*/
/*
* COPY THIS FILE AS `lv_conf.h` NEXT TO the `lvgl` FOLDER
*/
#if 0 /*Set it to "1" to enable content*/
#ifndef LV_CONF_H
#define LV_CONF_H
/* clang-format off */
#include <stdint.h>
/*====================
Graphical settings
*====================*/
/* Maximal horizontal and vertical resolution to support by the library.*/
#define LV_HOR_RES_MAX (480)
#define LV_VER_RES_MAX (320)
/* Color depth:
* - 1: 1 byte per pixel
* - 8: RGB233
* - 16: RGB565
* - 32: ARGB8888
*/
#define LV_COLOR_DEPTH 16
/* Swap the 2 bytes of RGB565 color.
* Useful if the display has a 8 bit interface (e.g. SPI)*/
#define LV_COLOR_16_SWAP 0
/* 1: Enable screen transparency.
* Useful for OSD or other overlapping GUIs.
* Requires `LV_COLOR_DEPTH = 32` colors and the screen's style should be modified: `style.body.opa = ...`*/
#define LV_COLOR_SCREEN_TRANSP 0
/*Images pixels with this color will not be drawn (with chroma keying)*/
#define LV_COLOR_TRANSP LV_COLOR_LIME /*LV_COLOR_LIME: pure green*/
/* Enable chroma keying for indexed images. */
#define LV_INDEXED_CHROMA 1
/* Enable anti-aliasing (lines, and radiuses will be smoothed) */
#define LV_ANTIALIAS 1
/* Default display refresh period.
* Can be changed in the display driver (`lv_disp_drv_t`).*/
#define LV_DISP_DEF_REFR_PERIOD 30 /*[ms]*/
/* Dot Per Inch: used to initialize default sizes.
* E.g. a button with width = LV_DPI / 2 -> half inch wide
* (Not so important, you can adjust it to modify default sizes and spaces)*/
#define LV_DPI 100 /*[px]*/
/* Type of coordinates. Should be `int16_t` (or `int32_t` for extreme cases) */
typedef int16_t lv_coord_t;
/*=========================
Memory manager settings
*=========================*/
/* LittelvGL's internal memory manager's settings.
* The graphical objects and other related data are stored here. */
/* 1: use custom malloc/free, 0: use the built-in `lv_mem_alloc` and `lv_mem_free` */
#define LV_MEM_CUSTOM 0
#if LV_MEM_CUSTOM == 0
/* Size of the memory used by `lv_mem_alloc` in bytes (>= 2kB)*/
# define LV_MEM_SIZE (32U * 1024U)
/* Complier prefix for a big array declaration */
# define LV_MEM_ATTR
/* Set an address for the memory pool instead of allocating it as an array.
* Can be in external SRAM too. */
# define LV_MEM_ADR 0
/* Automatically defrag. on free. Defrag. means joining the adjacent free cells. */
# define LV_MEM_AUTO_DEFRAG 1
#else /*LV_MEM_CUSTOM*/
# define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*Header for the dynamic memory function*/
# define LV_MEM_CUSTOM_ALLOC malloc /*Wrapper to malloc*/
# define LV_MEM_CUSTOM_FREE free /*Wrapper to free*/
#endif /*LV_MEM_CUSTOM*/
/* Garbage Collector settings
* Used if lvgl is binded to higher level language and the memory is managed by that language */
#define LV_ENABLE_GC 0
#if LV_ENABLE_GC != 0
# define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/
# define LV_MEM_CUSTOM_REALLOC your_realloc /*Wrapper to realloc*/
# define LV_MEM_CUSTOM_GET_SIZE your_mem_get_size /*Wrapper to lv_mem_get_size*/
#endif /* LV_ENABLE_GC */
/*=======================
Input device settings
*=======================*/
/* Input device default settings.
* Can be changed in the Input device driver (`lv_indev_drv_t`)*/
/* Input device read period in milliseconds */
#define LV_INDEV_DEF_READ_PERIOD 30
/* Drag threshold in pixels */
#define LV_INDEV_DEF_DRAG_LIMIT 10
/* Drag throw slow-down in [%]. Greater value -> faster slow-down */
#define LV_INDEV_DEF_DRAG_THROW 20
/* Long press time in milliseconds.
* Time to send `LV_EVENT_LONG_PRESSSED`) */
#define LV_INDEV_DEF_LONG_PRESS_TIME 400
/* Repeated trigger period in long press [ms]
* Time between `LV_EVENT_LONG_PRESSED_REPEAT */
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 100
/*==================
* Feature usage
*==================*/
/*1: Enable the Animations */
#define LV_USE_ANIMATION 1
#if LV_USE_ANIMATION
/*Declare the type of the user data of animations (can be e.g. `void *`, `int`, `struct`)*/
typedef void * lv_anim_user_data_t;
#endif
/* 1: Enable shadow drawing*/
#define LV_USE_SHADOW 1
/* 1: Enable object groups (for keyboard/encoder navigation) */
#define LV_USE_GROUP 1
#if LV_USE_GROUP
typedef void * lv_group_user_data_t;
#endif /*LV_USE_GROUP*/
/* 1: Enable GPU interface*/
#define LV_USE_GPU 1
/* 1: Enable file system (might be required for images */
#define LV_USE_FILESYSTEM 1
#if LV_USE_FILESYSTEM
/*Declare the type of the user data of file system drivers (can be e.g. `void *`, `int`, `struct`)*/
typedef void * lv_fs_drv_user_data_t;
#endif
/*1: Add a `user_data` to drivers and objects*/
#define LV_USE_USER_DATA 0
/*========================
* Image decoder and cache
*========================*/
/* 1: Enable indexed (palette) images */
#define LV_IMG_CF_INDEXED 1
/* 1: Enable alpha indexed images */
#define LV_IMG_CF_ALPHA 1
/* Default image cache size. Image caching keeps the images opened.
* If only the built-in image formats are used there is no real advantage of caching.
* (I.e. no new image decoder is added)
* With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images.
* However the opened images might consume additional RAM.
* LV_IMG_CACHE_DEF_SIZE must be >= 1 */
#define LV_IMG_CACHE_DEF_SIZE 1
/*Declare the type of the user data of image decoder (can be e.g. `void *`, `int`, `struct`)*/
typedef void * lv_img_decoder_user_data_t;
/*=====================
* Compiler settings
*====================*/
/* Define a custom attribute to `lv_tick_inc` function */
#define LV_ATTRIBUTE_TICK_INC
/* Define a custom attribute to `lv_task_handler` function */
#define LV_ATTRIBUTE_TASK_HANDLER
/* With size optimization (-Os) the compiler might not align data to
* 4 or 8 byte boundary. This alignment will be explicitly applied where needed.
* E.g. __attribute__((aligned(4))) */
#define LV_ATTRIBUTE_MEM_ALIGN
/* Attribute to mark large constant arrays for example
* font's bitmaps */
#define LV_ATTRIBUTE_LARGE_CONST
/* Export integer constant to binding.
* This macro is used with constants in the form of LV_<CONST> that
* should also appear on lvgl binding API such as Micropython
*
* The default value just prevents a GCC warning.
*/
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning
/*===================
* HAL settings
*==================*/
/* 1: use a custom tick source.
* It removes the need to manually update the tick with `lv_tick_inc`) */
#define LV_TICK_CUSTOM 0
#if LV_TICK_CUSTOM == 1
#define LV_TICK_CUSTOM_INCLUDE "something.h" /*Header for the sys time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current systime in ms*/
#endif /*LV_TICK_CUSTOM*/
typedef void * lv_disp_drv_user_data_t; /*Type of user data in the display driver*/
typedef void * lv_indev_drv_user_data_t; /*Type of user data in the input device driver*/
/*================
* Log settings
*===============*/
/*1: Enable the log module*/
#define LV_USE_LOG 0
#if LV_USE_LOG
/* How important log should be added:
* LV_LOG_LEVEL_TRACE A lot of logs to give detailed information
* LV_LOG_LEVEL_INFO Log important events
* LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem
* LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
* LV_LOG_LEVEL_NONE Do not log anything
*/
# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
/* 1: Print the log with 'printf';
* 0: user need to register a callback with `lv_log_register_print_cb`*/
# define LV_LOG_PRINTF 0
#endif /*LV_USE_LOG*/
/*=================
* Debug settings
*================*/
/* If Debug is enabled LittelvGL validates the parameters of the functions.
* If an invalid parameter is found an error log message is printed and
* the MCU halts at the error. (`LV_USE_LOG` should be enabled)
* If you are debugging the MCU you can pause
* the debugger to see exactly where the issue is.
*
* The behavior of asserts can be overwritten by redefining them here.
* E.g. #define LV_ASSERT_MEM(p) <my_assert_code>
*/
#define LV_USE_DEBUG 1
#if LV_USE_DEBUG
/*Check if the parameter is NULL. (Quite fast) */
#define LV_USE_ASSERT_NULL 1
/*Checks is the memory is successfully allocated or no. (Quite fast)*/
#define LV_USE_ASSERT_MEM 1
/* Check the strings.
* Search for NULL, very long strings, invalid characters, and unnatural repetitions. (Slow)
* If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled) */
#define LV_USE_ASSERT_STR 0
/* Check NULL, the object's type and existence (e.g. not deleted). (Quite slow)
* If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled) */
#define LV_USE_ASSERT_OBJ 0
/*Check if the styles are properly initialized. (Fast)*/
#define LV_USE_ASSERT_STYLE 1
#endif /*LV_USE_DEBUG*/
/*================
* THEME USAGE
*================*/
#define LV_THEME_LIVE_UPDATE 0 /*1: Allow theme switching at run time. Uses 8..10 kB of RAM*/
#define LV_USE_THEME_TEMPL 0 /*Just for test*/
#define LV_USE_THEME_DEFAULT 0 /*Built mainly from the built-in styles. Consumes very few RAM*/
#define LV_USE_THEME_ALIEN 0 /*Dark futuristic theme*/
#define LV_USE_THEME_NIGHT 0 /*Dark elegant theme*/
#define LV_USE_THEME_MONO 0 /*Mono color theme for monochrome displays*/
#define LV_USE_THEME_MATERIAL 0 /*Flat theme with bold colors and light shadows*/
#define LV_USE_THEME_ZEN 0 /*Peaceful, mainly light theme */
#define LV_USE_THEME_NEMO 0 /*Water-like theme based on the movie "Finding Nemo"*/
/*==================
* FONT USAGE
*===================*/
/* The built-in fonts contains the ASCII range and some Symbols with 4 bit-per-pixel.
* The symbols are available via `LV_SYMBOL_...` defines
* More info about fonts: https://docs.littlevgl.com/#Fonts
* To create a new font go to: https://littlevgl.com/ttf-font-to-c-array
*/
/* Robot fonts with bpp = 4
* https://fonts.google.com/specimen/Roboto */
#define LV_FONT_ROBOTO_12 0
#define LV_FONT_ROBOTO_16 1
#define LV_FONT_ROBOTO_22 0
#define LV_FONT_ROBOTO_28 0
/* Demonstrate special features */
#define LV_FONT_ROBOTO_12_SUBPX 1
#define LV_FONT_ROBOTO_28_COMPRESSED 1 /*bpp = 3*/
/*Pixel perfect monospace font
* http://pelulamu.net/unscii/ */
#define LV_FONT_UNSCII_8 0
/* Optionally declare your custom fonts here.
* You can use these fonts as default font too
* and they will be available globally. E.g.
* #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \
* LV_FONT_DECLARE(my_font_2)
*/
#define LV_FONT_CUSTOM_DECLARE
/*Always set a default font from the built-in fonts*/
#define LV_FONT_DEFAULT &lv_font_roboto_16
/* Enable it if you have fonts with a lot of characters.
* The limit depends on the font size, font face and bpp
* but with > 10,000 characters if you see issues probably you need to enable it.*/
#define LV_FONT_FMT_TXT_LARGE 0
/* Set the pixel order of the display.
* Important only if "subpx fonts" are used.
* With "normal" font it doesn't matter.
*/
#define LV_FONT_SUBPX_BGR 0
/*Declare the type of the user data of fonts (can be e.g. `void *`, `int`, `struct`)*/
typedef void * lv_font_user_data_t;
/*=================
* Text settings
*=================*/
/* Select a character encoding for strings.
* Your IDE or editor should have the same character encoding
* - LV_TXT_ENC_UTF8
* - LV_TXT_ENC_ASCII
* */
#define LV_TXT_ENC LV_TXT_ENC_UTF8
/*Can break (wrap) texts on these chars*/
#define LV_TXT_BREAK_CHARS " ,.;:-_"
/* If a word is at least this long, will break wherever "prettiest"
* To disable, set to a value <= 0 */
#define LV_TXT_LINE_BREAK_LONG_LEN 12
/* Minimum number of characters in a long word to put on a line before a break.
* Depends on LV_TXT_LINE_BREAK_LONG_LEN. */
#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3
/* Minimum number of characters in a long word to put on a line after a break.
* Depends on LV_TXT_LINE_BREAK_LONG_LEN. */
#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3
/* The control character to use for signalling text recoloring. */
#define LV_TXT_COLOR_CMD "#"
/* Support bidirectional texts.
* Allows mixing Left-to-Right and Right-to-Left texts.
* The direction will be processed according to the Unicode Bidirectioanl Algorithm:
* https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/
#define LV_USE_BIDI 0
#if LV_USE_BIDI
/* Set the default direction. Supported values:
* `LV_BIDI_DIR_LTR` Left-to-Right
* `LV_BIDI_DIR_RTL` Right-to-Left
* `LV_BIDI_DIR_AUTO` detect texts base direction */
#define LV_BIDI_BASE_DIR_DEF LV_BIDI_DIR_AUTO
#endif
/*Change the built in (v)snprintf functions*/
#define LV_SPRINTF_CUSTOM 0
#if LV_SPRINTF_CUSTOM
# define LV_SPRINTF_INCLUDE <stdio.h>
# define lv_snprintf snprintf
# define lv_vsnprintf vsnprintf
#endif /*LV_SPRINTF_CUSTOM*/
/*===================
* LV_OBJ SETTINGS
*==================*/
/*Declare the type of the user data of object (can be e.g. `void *`, `int`, `struct`)*/
typedef void * lv_obj_user_data_t;
/*1: enable `lv_obj_realaign()` based on `lv_obj_align()` parameters*/
#define LV_USE_OBJ_REALIGN 1
/* Enable to make the object clickable on a larger area.
* LV_EXT_CLICK_AREA_OFF or 0: Disable this feature
* LV_EXT_CLICK_AREA_TINY: The extra area can be adjusted horizontally and vertically (0..255 px)
* LV_EXT_CLICK_AREA_FULL: The extra area can be adjusted in all 4 directions (-32k..+32k px)
*/
#define LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_OFF
/*==================
* LV OBJ X USAGE
*================*/
/*
* Documentation of the object types: https://docs.littlevgl.com/#Object-types
*/
/*Arc (dependencies: -)*/
#define LV_USE_ARC 1
/*Bar (dependencies: -)*/
#define LV_USE_BAR 1
/*Button (dependencies: lv_cont*/
#define LV_USE_BTN 1
#if LV_USE_BTN != 0
/*Enable button-state animations - draw a circle on click (dependencies: LV_USE_ANIMATION)*/
# define LV_BTN_INK_EFFECT 0
#endif
/*Button matrix (dependencies: -)*/
#define LV_USE_BTNM 1
/*Calendar (dependencies: -)*/
#define LV_USE_CALENDAR 1
/*Canvas (dependencies: lv_img)*/
#define LV_USE_CANVAS 1
/*Check box (dependencies: lv_btn, lv_label)*/
#define LV_USE_CB 1
/*Chart (dependencies: -)*/
#define LV_USE_CHART 1
#if LV_USE_CHART
# define LV_CHART_AXIS_TICK_LABEL_MAX_LEN 20
#endif
/*Container (dependencies: -*/
#define LV_USE_CONT 1
/*Color picker (dependencies: -*/
#define LV_USE_CPICKER 1
/*Drop down list (dependencies: lv_page, lv_label, lv_symbol_def.h)*/
#define LV_USE_DDLIST 1
#if LV_USE_DDLIST != 0
/*Open and close default animation time [ms] (0: no animation)*/
# define LV_DDLIST_DEF_ANIM_TIME 200
#endif
/*Gauge (dependencies:lv_bar, lv_lmeter)*/
#define LV_USE_GAUGE 1
/*Image (dependencies: lv_label*/
#define LV_USE_IMG 1
/*Image Button (dependencies: lv_btn*/
#define LV_USE_IMGBTN 1
#if LV_USE_IMGBTN
/*1: The imgbtn requires left, mid and right parts and the width can be set freely*/
# define LV_IMGBTN_TILED 0
#endif
/*Keyboard (dependencies: lv_btnm)*/
#define LV_USE_KB 1
/*Label (dependencies: -*/
#define LV_USE_LABEL 1
#if LV_USE_LABEL != 0
/*Hor, or ver. scroll speed [px/sec] in 'LV_LABEL_LONG_ROLL/ROLL_CIRC' mode*/
# define LV_LABEL_DEF_SCROLL_SPEED 25
/* Waiting period at beginning/end of animation cycle */
# define LV_LABEL_WAIT_CHAR_COUNT 3
/*Enable selecting text of the label */
# define LV_LABEL_TEXT_SEL 0
/*Store extra some info in labels (12 bytes) to speed up drawing of very long texts*/
# define LV_LABEL_LONG_TXT_HINT 0
#endif
/*LED (dependencies: -)*/
#define LV_USE_LED 1
/*Line (dependencies: -*/
#define LV_USE_LINE 1
/*List (dependencies: lv_page, lv_btn, lv_label, (lv_img optionally for icons ))*/
#define LV_USE_LIST 1
#if LV_USE_LIST != 0
/*Default animation time of focusing to a list element [ms] (0: no animation) */
# define LV_LIST_DEF_ANIM_TIME 100
#endif
/*Line meter (dependencies: *;)*/
#define LV_USE_LMETER 1
/*Message box (dependencies: lv_rect, lv_btnm, lv_label)*/
#define LV_USE_MBOX 1
/*Page (dependencies: lv_cont)*/
#define LV_USE_PAGE 1
#if LV_USE_PAGE != 0
/*Focus default animation time [ms] (0: no animation)*/
# define LV_PAGE_DEF_ANIM_TIME 400
#endif
/*Preload (dependencies: lv_arc, lv_anim)*/
#define LV_USE_PRELOAD 1
#if LV_USE_PRELOAD != 0
# define LV_PRELOAD_DEF_ARC_LENGTH 60 /*[deg]*/
# define LV_PRELOAD_DEF_SPIN_TIME 1000 /*[ms]*/
# define LV_PRELOAD_DEF_ANIM LV_PRELOAD_TYPE_SPINNING_ARC
#endif
/*Roller (dependencies: lv_ddlist)*/
#define LV_USE_ROLLER 1
#if LV_USE_ROLLER != 0
/*Focus animation time [ms] (0: no animation)*/
# define LV_ROLLER_DEF_ANIM_TIME 200
/*Number of extra "pages" when the roller is infinite*/
# define LV_ROLLER_INF_PAGES 7
#endif
/*Slider (dependencies: lv_bar)*/
#define LV_USE_SLIDER 1
/*Spinbox (dependencies: lv_ta)*/
#define LV_USE_SPINBOX 1
/*Switch (dependencies: lv_slider)*/
#define LV_USE_SW 1
/*Text area (dependencies: lv_label, lv_page)*/
#define LV_USE_TA 1
#if LV_USE_TA != 0
# define LV_TA_DEF_CURSOR_BLINK_TIME 400 /*ms*/
# define LV_TA_DEF_PWD_SHOW_TIME 1500 /*ms*/
#endif
/*Table (dependencies: lv_label)*/
#define LV_USE_TABLE 1
#if LV_USE_TABLE
# define LV_TABLE_COL_MAX 12
#endif
/*Tab (dependencies: lv_page, lv_btnm)*/
#define LV_USE_TABVIEW 1
# if LV_USE_TABVIEW != 0
/*Time of slide animation [ms] (0: no animation)*/
# define LV_TABVIEW_DEF_ANIM_TIME 300
#endif
/*Tileview (dependencies: lv_page) */
#define LV_USE_TILEVIEW 1
#if LV_USE_TILEVIEW
/*Time of slide animation [ms] (0: no animation)*/
# define LV_TILEVIEW_DEF_ANIM_TIME 300
#endif
/*Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page)*/
#define LV_USE_WIN 1
/*==================
* Non-user section
*==================*/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) /* Disable warnings for Visual Studio*/
# define _CRT_SECURE_NO_WARNINGS
#endif
/*--END OF LV_CONF_H--*/
/*Be sure every define has a default value*/
#include "lvgl/src/lv_conf_checker.h"
#endif /*LV_CONF_H*/
#endif /*End of "Content enable"*/

View File

@@ -1,886 +0,0 @@
/**
* @file lv_draw_img.c
*
*/
/*********************
* INCLUDES
*********************/
#include <lvgl/lv_misc/circ.h>
#include "lv_conf.h"
#include <stdio.h>
#include <stdbool.h>
#include "lvgl/lv_misc/text.h"
#include "lv_draw.h"
#include "misc/fs/fsint.h"
#include "misc/math/math_base.h"
#include "lv_draw_rbasic.h"
#include "lv_draw_vbasic.h"
/*********************
* DEFINES
*********************/
#define LINE_WIDTH_CORR_BASE 64
#define LINE_WIDTH_CORR_SHIFT 6
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
#if USE_LV_RECT != 0
static void lv_draw_rect_main_mid(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa);
static void lv_draw_rect_main_corner(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa);
static void lv_draw_rect_border_straight(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa);
static void lv_draw_rect_border_corner(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa);
static uint16_t lv_draw_rect_radius_corr(uint16_t r, cord_t w, cord_t h);
#endif /*USE_LV_RECT != 0*/
/**********************
* STATIC VARIABLES
**********************/
#if LV_VDB_SIZE != 0
static void (*fill_fp)(const area_t * cords_p, const area_t * mask_p, color_t color, opa_t opa) = lv_vfill;
static void (*letter_fp)(const point_t * pos_p, const area_t * mask_p, const font_t * font_p, uint8_t letter, color_t color, opa_t opa) = lv_vletter;
static void (*map_fp)(const area_t * cords_p, const area_t * mask_p, const color_t * map_p, opa_t opa, bool transp, bool upscale, color_t recolor, opa_t recolor_opa) = lv_vmap;
#else
static void (*fill_fp)(const area_t * cords_p, const area_t * mask_p, color_t color, opa_t opa) = lv_rfill;
static void (*letter_fp)(const point_t * pos_p, const area_t * mask_p, const font_t * font_p, uint8_t letter, color_t color, opa_t opa) = lv_rletter;
static void (*map_fp)(const area_t * cords_p, const area_t * mask_p, const color_t * map_p, opa_t opa, bool transp, bool upscale, color_t recolor, opa_t recolor_opa) = lv_rmap;
#endif
#if USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0
static lv_rects_t lv_img_no_pic_rects = {
.objs.color = COLOR_BLACK, .gcolor = COLOR_BLACK,
.bcolor = COLOR_RED, .bwidth = 2 * LV_DOWNSCALE, .bopa = 100,
.round = 0, .empty = 0
};
static lv_labels_t lv_img_no_pic_labels = {
.font = LV_FONT_DEFAULT, .objs.color = COLOR_WHITE,
.letter_space = 1 * LV_DOWNSCALE, .line_space = 1 * LV_DOWNSCALE,
.mid = 1,
};
#endif
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
#if USE_LV_RECT != 0
/**
* Draw a rectangle
* @param cords_p the coordinates of the rectangle
* @param mask_p the rectangle will be drawn only in this mask
* @param rects_p pointer to a rectangle style
* @param opa the opacity of the rectangle (0..255)
*/
void lv_draw_rect(const area_t * cords_p, const area_t * mask_p,
const lv_rects_t * rects_p, opa_t opa)
{
if(area_get_height(cords_p) < 1 || area_get_width(cords_p) < 1) return;
if(rects_p->empty == 0){
lv_draw_rect_main_mid(cords_p, mask_p, rects_p, opa);
if(rects_p->round != 0) {
lv_draw_rect_main_corner(cords_p, mask_p, rects_p, opa);
}
}
if(rects_p->bwidth != 0) {
lv_draw_rect_border_straight(cords_p, mask_p, rects_p, opa);
if(rects_p->round != 0) {
lv_draw_rect_border_corner(cords_p, mask_p, rects_p, opa);
}
}
}
#endif /*USE_LV_RECT != 0*/
#if USE_LV_LABEL != 0
/**
* Write a text
* @param cords_p coordinates of the label
* @param mask_p the label will be drawn only in this area
* @param labels_p pointer to a label style
* @param opa opacity of the text (0..255)
* @param txt 0 terminated text to write
*/
void lv_draw_label(const area_t * cords_p,const area_t * mask_p,
const lv_labels_t * labels_p, opa_t opa, const char * txt)
{
const font_t * font_p = font_get(labels_p->font);
cord_t w = area_get_width(cords_p);
/*Init variables for the first line*/
cord_t line_length = 0;
uint32_t line_start = 0;
uint32_t line_end = txt_get_next_line(txt, font_p, labels_p->letter_space, w);
point_t pos;
pos.x = cords_p->x1;
pos.y = cords_p->y1;
/*Align the line to middle if enabled*/
if(labels_p->mid != 0) {
line_length = txt_get_width(&txt[line_start], line_end - line_start,
font_p, labels_p->letter_space);
pos.x += (w - line_length) / 2;
}
uint32_t i;
/*Write out all lines*/
while(txt[line_start] != '\0') {
/*Write all letter of a line*/
for(i = line_start; i < line_end; i++) {
letter_fp(&pos, mask_p, font_p, txt[i], labels_p->objs.color, opa);
pos.x += font_get_width(font_p, txt[i]) + labels_p->letter_space;
}
/*Go to next line*/
line_start = line_end;
line_end += txt_get_next_line(&txt[line_start], font_p, labels_p->letter_space, w);
pos.x = cords_p->x1;
/*Align to middle*/
if(labels_p->mid != 0) {
line_length = txt_get_width(&txt[line_start], line_end - line_start,
font_p, labels_p->letter_space);
pos.x += (w - line_length) / 2;
}
/*Go the next line position*/
pos.y += font_get_height(font_p);
pos.y += labels_p->line_space;
}
}
#endif /* USE_LV_LABEL != 0*/
#if USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0
/**
* Draw an image
* @param cords_p the coordinates of the image
* @param mask_p the image will be drawn only in this area
* @param map_p pointer to a color_t array which contains the pixels of the image
* @param opa opacity of the image (0..255)
*/
void lv_draw_img(const area_t * cords_p, const area_t * mask_p,
const lv_imgs_t * imgs_p, opa_t opa, const char * fn)
{
if(fn == NULL) {
lv_draw_rect(cords_p, mask_p, &lv_img_no_pic_rects, opa);
lv_draw_label(cords_p, mask_p,&lv_img_no_pic_labels, opa, "No data");
} else {
fs_file_t file;
fs_res_t res = fs_open(&file, fn, FS_MODE_RD);
if(res == FS_RES_OK) {
lv_img_raw_header_t header;
uint32_t br;
res = fs_read(&file, &header, sizeof(lv_img_raw_header_t), &br);
/*If the width is greater then map width then it is upscaled */
bool upscale = false;
if(area_get_width(cords_p) > header.w) upscale = true;
cord_t row;
area_t act_area;
area_t mask_sub;
bool union_ok;
union_ok = area_union(&mask_sub, mask_p, cords_p);
if(union_ok == false) {
fs_close(&file);
return;
}
uint8_t ds_shift = 0;
uint8_t ds_num = 1;
/*Set some values if upscale enabled*/
if(upscale != false) {
ds_shift = 1;
ds_num = 2;
}
uint32_t start_offset = sizeof(lv_img_raw_header_t);
start_offset += (area_get_width(cords_p) >> ds_shift) *
((mask_sub.y1 - cords_p->y1) >> ds_shift) * sizeof(color_t); /*First row*/
start_offset += ((mask_sub.x1 - cords_p->x1) >> ds_shift) * sizeof(color_t); /*First col*/
fs_seek(&file, start_offset);
uint32_t useful_data = (area_get_width(&mask_sub) >> ds_shift) * sizeof(color_t);
uint32_t next_row = (area_get_width(cords_p) >> ds_shift) * sizeof(color_t) - useful_data;
/*Round the coordinates with upscale*/
if(upscale != false) {
if((mask_sub.x1 & 0x1) != 0) mask_sub.x1 -= 1; /*Can be only even*/
if((mask_sub.x2 & 0x1) == 0) mask_sub.x2 -= 1; /*Can be only odd*/
}
area_cpy(&act_area, &mask_sub);
/* Round down the start coordinate, because the upscaled images
* can start only LV_DOWNSCALE 'y' coordinates */
act_area.y1 &= ~(cord_t)(ds_num - 1) ;
act_area.y2 = act_area.y1 + ds_num - 1;
uint32_t act_pos;
color_t buf[LV_HOR_RES];
for(row = mask_sub.y1; row <= mask_sub.y2; row += ds_num) {
res = fs_read(&file, buf, useful_data, &br);
map_fp(&act_area, &mask_sub, buf, opa, header.transp, upscale,
imgs_p->objs.color, imgs_p->recolor_opa);
fs_tell(&file, &act_pos);
fs_seek(&file, act_pos + next_row);
act_area.y1 += ds_num;
act_area.y2 += ds_num;
}
}
fs_close(&file);
if(res != FS_RES_OK) {
lv_draw_rect(cords_p, mask_p, &lv_img_no_pic_rects, opa);
lv_draw_label(cords_p, mask_p,&lv_img_no_pic_labels, opa, fn);
}
}
}
#endif /*USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0*/
#if USE_LV_LINE != 0
/**
* Draw a line
* @param p1 first point of the line
* @param p2 second point of the line
* @param mask_pthe line will be drawn only on this area
* @param lines_p pointer to a line style
* @param opa opacity of the line (0..255)
*/
void lv_draw_line(const point_t * p1, const point_t * p2, const area_t * mask_p,
const lv_lines_t * lines_p, opa_t opa)
{
if(lines_p->width == 0) return;
if(p1->x == p2->x && p1->y == p2->y) return;
cord_t dx = MATH_ABS(p2->x - p1->x);
cord_t sx = p1->x < p2->x ? 1 : -1;
cord_t dy = MATH_ABS(p2->y - p1->y);
cord_t sy = p1->y < p2->y ? 1 : -1;
cord_t err = (dx > dy ? dx : -dy) / 2;
cord_t e2;
bool hor = dx > dy ? true : false; /*Rather horizontal or vertical*/
cord_t last_x = p1->x;
cord_t last_y = p1->y;
point_t act_point;
act_point.x = p1->x;
act_point.y = p1->y;
uint16_t width;
uint16_t wcor;
uint16_t width_half;
uint16_t width_1;
static const uint8_t width_corr_array[] = {
64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66,
67, 67, 67, 68, 68, 68, 69, 69, 69, 70, 70, 71, 71, 72, 72, 72, 73, 73, 74,
74, 75, 75, 76, 77, 77, 78, 78, 79, 79, 80, 81, 81, 82, 82, 83, 84, 84, 85,
86, 86, 87, 88, 88, 89, 90, 91,
};
if(hor == false) {
wcor = (dx * LINE_WIDTH_CORR_BASE) / dy;
} else {
wcor = (dy * LINE_WIDTH_CORR_BASE) / dx;
}
/*Make the correction on lie width*/
width = ((lines_p->width - 1) * width_corr_array[wcor]) >> LINE_WIDTH_CORR_SHIFT;
width_half = width >> 1;
width_1 = width & 0x1 ? 1 : 0;
while(1){
if(hor == true && last_y != act_point.y) {
area_t act_area;
area_t draw_area;
act_area.x1 = last_x;
act_area.x2 = act_point.x - sx;
act_area.y1 = last_y - width_half ;
act_area.y2 = act_point.y - sy + width_half + width_1;
last_y = act_point.y;
last_x = act_point.x;
draw_area.x1 = MATH_MIN(act_area.x1, act_area.x2);
draw_area.x2 = MATH_MAX(act_area.x1, act_area.x2);
draw_area.y1 = MATH_MIN(act_area.y1, act_area.y2);
draw_area.y2 = MATH_MAX(act_area.y1, act_area.y2);
fill_fp(&draw_area, mask_p, lines_p->objs.color, opa);
}
if (hor == false && last_x != act_point.x) {
area_t act_area;
area_t draw_area;
act_area.x1 = last_x - width_half;
act_area.x2 = act_point.x - sx + width_half + width_1;
act_area.y1 = last_y ;
act_area.y2 = act_point.y - sy;
last_y = act_point.y;
last_x = act_point.x;
draw_area.x1 = MATH_MIN(act_area.x1, act_area.x2);
draw_area.x2 = MATH_MAX(act_area.x1, act_area.x2);
draw_area.y1 = MATH_MIN(act_area.y1, act_area.y2);
draw_area.y2 = MATH_MAX(act_area.y1, act_area.y2);
fill_fp(&draw_area, mask_p, lines_p->objs.color, opa);
}
/*Calc. the next point of the line*/
if (act_point.x == p2->x && act_point.y == p2->y) break;
e2 = err;
if (e2 >-dx) {
err -= dy;
act_point.x += sx;
}
if (e2 < dy) {
err += dx;
act_point.y += sy;
}
}
/*Draw the last part of the line*/
if(hor == true) {
area_t act_area;
area_t draw_area;
act_area.x1 = last_x;
act_area.x2 = act_point.x;
act_area.y1 = last_y - width_half ;
act_area.y2 = act_point.y + width_half + width_1;
draw_area.x1 = MATH_MIN(act_area.x1, act_area.x2);
draw_area.x2 = MATH_MAX(act_area.x1, act_area.x2);
draw_area.y1 = MATH_MIN(act_area.y1, act_area.y2);
draw_area.y2 = MATH_MAX(act_area.y1, act_area.y2);
fill_fp(&draw_area, mask_p, lines_p->objs.color, opa);
}
if (hor == false) {
area_t act_area;
area_t draw_area;
act_area.x1 = last_x - width_half;
act_area.x2 = act_point.x + width_half + width_1;
act_area.y1 = last_y;
act_area.y2 = act_point.y;
draw_area.x1 = MATH_MIN(act_area.x1, act_area.x2);
draw_area.x2 = MATH_MAX(act_area.x1, act_area.x2);
draw_area.y1 = MATH_MIN(act_area.y1, act_area.y2);
draw_area.y2 = MATH_MAX(act_area.y1, act_area.y2);
fill_fp(&draw_area, mask_p, lines_p->objs.color, opa);
}
}
#endif /*USE_LV_LINE != 0*/
/**********************
* STATIC FUNCTIONS
**********************/
#if USE_LV_RECT != 0
/**
* Draw the middle part (rectangular) of a rectangle
* @param cords_p the coordinates of the original rectangle
* @param mask_p the rectangle will be drawn only on this area
* @param rects_p pointer to a rectangle style
* @param opa opacity of the rectangle (0..255)
*/
static void lv_draw_rect_main_mid(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa)
{
uint16_t radius = rects_p->round;
color_t main_color = rects_p->objs.color;
color_t grad_color = rects_p->gcolor;
uint8_t mix;
cord_t height = area_get_height(cords_p);
cord_t width = area_get_width(cords_p);
radius = lv_draw_rect_radius_corr(radius, width, height);
/*If the radius is too big then there is no body*/
if(radius > height / 2) return;
area_t work_area;
work_area.x1 = cords_p->x1;
work_area.x2 = cords_p->x2;
if(main_color.full == grad_color.full) {
work_area.y1 = cords_p->y1 + radius;
work_area.y2 = cords_p->y2 - radius;
fill_fp(&work_area, mask_p, main_color, opa);
} else {
cord_t row;
cord_t row_start = cords_p->y1 + radius;
cord_t row_end = cords_p->y2 - radius;
color_t act_color;
if(row_start < 0) row_start = 0;
for(row = row_start ;
row <= row_end;
row ++)
{
work_area.y1 = row;
work_area.y2 = row;
mix = (uint32_t)((uint32_t)(cords_p->y2 - work_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&work_area, mask_p, act_color, opa);
}
}
}
/**
* Draw the top and bottom parts (corners) of a rectangle
* @param cords_p the coordinates of the original rectangle
* @param mask_p the rectangle will be drawn only on this area
* @param rects_p pointer to a rectangle style
* @param opa opacity of the rectangle (0..255)
*/
static void lv_draw_rect_main_corner(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa)
{
uint16_t radius = rects_p->round;
color_t main_color = rects_p->objs.color;
color_t grad_color = rects_p->gcolor;
color_t act_color;
uint8_t mix;
cord_t height = area_get_height(cords_p);
cord_t width = area_get_width(cords_p);
radius = lv_draw_rect_radius_corr(radius, width, height);
point_t lt_origo; /*Left Top origo*/
point_t lb_origo; /*Left Bottom origo*/
point_t rt_origo; /*Right Top origo*/
point_t rb_origo; /*Left Bottom origo*/
lt_origo.x = cords_p->x1 + radius;
lt_origo.y = cords_p->y1 + radius;
lb_origo.x = cords_p->x1 + radius;
lb_origo.y = cords_p->y2 - radius;
rt_origo.x = cords_p->x2 - radius;
rt_origo.y = cords_p->y1 + radius;
rb_origo.x = cords_p->x2 - radius;
rb_origo.y = cords_p->y2 - radius;
area_t edge_top_area;
area_t mid_top_area;
area_t mid_bot_area;
area_t edge_bot_area;
point_t cir;
cord_t cir_tmp;
circ_init(&cir, &cir_tmp, radius);
/*Init the areas*/
area_set(&mid_bot_area, lb_origo.x + CIRC_OCT4_X(cir),
lb_origo.y + CIRC_OCT4_Y(cir),
rb_origo.x + CIRC_OCT1_X(cir),
rb_origo.y + CIRC_OCT1_Y(cir));
area_set(&edge_bot_area, lb_origo.x + CIRC_OCT3_X(cir),
lb_origo.y + CIRC_OCT3_Y(cir),
rb_origo.x + CIRC_OCT2_X(cir),
rb_origo.y + CIRC_OCT2_Y(cir));
area_set(&mid_top_area, lt_origo.x + CIRC_OCT5_X(cir),
lt_origo.y + CIRC_OCT5_Y(cir),
rt_origo.x + CIRC_OCT8_X(cir),
rt_origo.y + CIRC_OCT8_Y(cir));
area_set(&edge_top_area, lt_origo.x + CIRC_OCT6_X(cir),
lt_origo.y + CIRC_OCT6_Y(cir),
rt_origo.x + CIRC_OCT7_X(cir),
rt_origo.y + CIRC_OCT7_Y(cir));
while(circ_cont(&cir)) {
uint8_t edge_top_refr = 0;
uint8_t mid_top_refr = 0;
uint8_t mid_bot_refr = 0;
uint8_t edge_bot_refr = 0;
/*If a new row coming draw the previous
* The x coordinate can grow on the same y so wait for the last x*/
if(mid_bot_area.y1 != CIRC_OCT4_Y(cir) + lb_origo.y ) {
mid_bot_refr = 1;
}
if(edge_bot_area.y1 != CIRC_OCT2_Y(cir) + lb_origo.y) {
edge_bot_refr = 1;
}
if(mid_top_area.y1 != CIRC_OCT8_Y(cir) + lt_origo.y) {
mid_top_refr = 1;
}
if(edge_top_area.y1 != CIRC_OCT7_Y(cir) + lt_origo.y) {
edge_top_refr = 1;
}
/* Do not refresh the first row in the middle
* because the body drawer makes it*/
if(mid_bot_area.y1 == cords_p->y2 - radius){
mid_bot_refr = 0;
}
if(mid_top_area.y1 == cords_p->y1 + radius){
mid_top_refr = 0;
}
/*Draw the areas which are not disabled*/
if(edge_top_refr != 0){
mix = (uint32_t)((uint32_t)(cords_p->y2 - edge_top_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&edge_top_area, mask_p, act_color, opa);
}
if(mid_top_refr != 0) {
mix = (uint32_t)((uint32_t)(cords_p->y2 - mid_top_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&mid_top_area, mask_p, act_color, opa);
}
if(mid_bot_refr != 0) {
mix = (uint32_t)((uint32_t)(cords_p->y2 - mid_bot_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&mid_bot_area, mask_p, act_color, opa);
}
if(edge_bot_refr != 0) {
mix = (uint32_t)((uint32_t)(cords_p->y2 - edge_bot_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&edge_bot_area, mask_p, act_color, opa);
}
/*Save the current coordinates*/
area_set(&mid_bot_area, lb_origo.x + CIRC_OCT4_X(cir),
lb_origo.y + CIRC_OCT4_Y(cir),
rb_origo.x + CIRC_OCT1_X(cir),
rb_origo.y + CIRC_OCT1_Y(cir));
area_set(&edge_bot_area, lb_origo.x + CIRC_OCT3_X(cir),
lb_origo.y + CIRC_OCT3_Y(cir),
rb_origo.x + CIRC_OCT2_X(cir),
rb_origo.y + CIRC_OCT2_Y(cir));
area_set(&mid_top_area, lt_origo.x + CIRC_OCT5_X(cir),
lt_origo.y + CIRC_OCT5_Y(cir),
rt_origo.x + CIRC_OCT8_X(cir),
rt_origo.y + CIRC_OCT8_Y(cir));
area_set(&edge_top_area, lt_origo.x + CIRC_OCT6_X(cir),
lt_origo.y + CIRC_OCT6_Y(cir),
rt_origo.x + CIRC_OCT7_X(cir),
rt_origo.y + CIRC_OCT7_Y(cir));
circ_next(&cir, &cir_tmp);
}
mix = (uint32_t)((uint32_t)(cords_p->y2 - edge_top_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&edge_top_area, mask_p, act_color, opa);
if(edge_top_area.y1 != mid_top_area.y1) {
mix = (uint32_t)((uint32_t)(cords_p->y2 - mid_top_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&mid_top_area, mask_p, act_color, opa);
}
mix = (uint32_t)((uint32_t)(cords_p->y2 - mid_bot_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&mid_bot_area, mask_p, act_color, opa);
if(edge_bot_area.y1 != mid_bot_area.y1) {
mix = (uint32_t)((uint32_t)(cords_p->y2 - edge_bot_area.y1) * 255) / height;
act_color = color_mix(main_color, grad_color, mix);
fill_fp(&edge_bot_area, mask_p, act_color, opa);
}
}
/**
* Draw the straight parts of a rectangle border
* @param cords_p the coordinates of the original rectangle
* @param mask_p the rectangle will be drawn only on this area
* @param rects_p pointer to a rectangle style
* @param opa opacity of the rectangle (0..255)
*/
static void lv_draw_rect_border_straight(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa)
{
uint16_t radius = rects_p->round;
cord_t width = area_get_width(cords_p);
cord_t height = area_get_height(cords_p);
uint16_t b_width = rects_p->bwidth;
opa_t b_opa = (uint16_t)((uint16_t) opa * rects_p->bopa) / 100;
area_t work_area;
cord_t length_corr = 0;
cord_t corner_size = 0;
/*the 0 px border width drawn as 1 px, so decrement the b_width*/
b_width--;
radius = lv_draw_rect_radius_corr(radius, width, height);
if(radius < b_width) {
length_corr = b_width - radius;
corner_size = b_width;
} else {
corner_size = radius;
}
/* Modify the corner_size if corner is drawn */
corner_size ++;
color_t b_color = rects_p->bcolor;
/*Left border*/
work_area.x1 = cords_p->x1;
work_area.x2 = work_area.x1 + b_width;
work_area.y1 = cords_p->y1 + corner_size;
work_area.y2 = cords_p->y2 - corner_size;
fill_fp(&work_area, mask_p, b_color, b_opa);
/*Right border*/
work_area.x2 = cords_p->x2;
work_area.x1 = work_area.x2 - b_width;
fill_fp(&work_area, mask_p, b_color, b_opa);
/*Upper border*/
work_area.x1 = cords_p->x1 + corner_size - length_corr;
work_area.x2 = cords_p->x2 - corner_size + length_corr;
work_area.y1 = cords_p->y1;
work_area.y2 = cords_p->y1 + b_width;
fill_fp(&work_area, mask_p, b_color, b_opa);
/*Lower border*/
work_area.y2 = cords_p->y2;
work_area.y1 = work_area.y2 - b_width;
fill_fp(&work_area, mask_p, b_color, b_opa);
/*Draw the a remaining rectangles if the radius is smaller then b_width */
if(length_corr != 0) {
work_area.x1 = cords_p->x1;
work_area.x2 = cords_p->x1 + radius;
work_area.y1 = cords_p->y1 + radius + 1;
work_area.y2 = cords_p->y1 + b_width;
fill_fp(&work_area, mask_p, b_color, b_opa);
work_area.x1 = cords_p->x2 - radius;
work_area.x2 = cords_p->x2;
work_area.y1 = cords_p->y1 + radius + 1;
work_area.y2 = cords_p->y1 + b_width;
fill_fp(&work_area, mask_p, b_color, b_opa);
work_area.x1 = cords_p->x1;
work_area.x2 = cords_p->x1 + radius;
work_area.y1 = cords_p->y2 - b_width;
work_area.y2 = cords_p->y2 - radius - 1;
fill_fp(&work_area, mask_p, b_color, b_opa);
work_area.x1 = cords_p->x2 - radius;
work_area.x2 = cords_p->x2;
work_area.y1 = cords_p->y2 - b_width;
work_area.y2 = cords_p->y2 - radius - 1;
fill_fp(&work_area, mask_p, b_color, b_opa);
}
/*If radius == 0 one px on the corners are not drawn*/
if(radius == 0) {
work_area.x1 = cords_p->x1;
work_area.x2 = cords_p->x1;
work_area.y1 = cords_p->y1;
work_area.y2 = cords_p->y1;
fill_fp(&work_area, mask_p, b_color, b_opa);
work_area.x1 = cords_p->x2;
work_area.x2 = cords_p->x2;
work_area.y1 = cords_p->y1;
work_area.y2 = cords_p->y1;
fill_fp(&work_area, mask_p, b_color, b_opa);
work_area.x1 = cords_p->x1;
work_area.x2 = cords_p->x1;
work_area.y1 = cords_p->y2;
work_area.y2 = cords_p->y2;
fill_fp(&work_area, mask_p, b_color, b_opa);
work_area.x1 = cords_p->x2;
work_area.x2 = cords_p->x2;
work_area.y1 = cords_p->y2;
work_area.y2 = cords_p->y2;
fill_fp(&work_area, mask_p, b_color, b_opa);
}
}
/**
* Draw the corners of a rectangle border
* @param cords_p the coordinates of the original rectangle
* @param mask_p the rectangle will be drawn only on this area
* @param rects_p pointer to a rectangle style
* @param opa opacity of the rectangle (0..255)
*/
static void lv_draw_rect_border_corner(const area_t * cords_p, const area_t * mask_p, const lv_rects_t * rects_p, opa_t opa)
{
uint16_t radius = rects_p->round;
uint16_t b_width = rects_p->bwidth;
color_t b_color = rects_p->bcolor;
opa_t b_opa = (uint16_t)((uint16_t) opa * rects_p->bopa ) / 100;
/*0 px border width drawn as 1 px, so decrement the b_width*/
b_width--;
cord_t width = area_get_width(cords_p);
cord_t height = area_get_height(cords_p);
radius = lv_draw_rect_radius_corr(radius, width, height);
point_t lt_origo; /*Left Top origo*/
point_t lb_origo; /*Left Bottom origo*/
point_t rt_origo; /*Right Top origo*/
point_t rb_origo; /*Left Bottom origo*/
lt_origo.x = cords_p->x1 + radius;
lt_origo.y = cords_p->y1 + radius;
lb_origo.x = cords_p->x1 + radius;
lb_origo.y = cords_p->y2 - radius;
rt_origo.x = cords_p->x2 - radius;
rt_origo.y = cords_p->y1 + radius;
rb_origo.x = cords_p->x2 - radius;
rb_origo.y = cords_p->y2 - radius;
point_t cir_out;
cord_t tmp_out;
circ_init(&cir_out, &tmp_out, radius);
point_t cir_in;
cord_t tmp_in;
cord_t radius_in = radius - b_width;
if(radius_in < 0){
radius_in = 0;
}
circ_init(&cir_in, &tmp_in, radius_in);
area_t circ_area;
cord_t act_w1;
cord_t act_w2;
while( cir_out.y <= cir_out.x) {
/*Calculate the actual width to avoid overwriting pixels*/
if(cir_in.y < cir_in.x) {
act_w1 = cir_out.x - cir_in.x;
act_w2 = act_w1;
} else {
act_w1 = cir_out.x - cir_out.y;
act_w2 = act_w1 - 1;
}
/*Draw the octets to the right bottom corner*/
circ_area.x1 = rb_origo.x + CIRC_OCT1_X(cir_out) - act_w2;
circ_area.x2 = rb_origo.x + CIRC_OCT1_X(cir_out);
circ_area.y1 = rb_origo.y + CIRC_OCT1_Y(cir_out);
circ_area.y2 = rb_origo.y + CIRC_OCT1_Y(cir_out);
fill_fp(&circ_area, mask_p, b_color, b_opa);
circ_area.x1 = rb_origo.x + CIRC_OCT2_X(cir_out);
circ_area.x2 = rb_origo.x + CIRC_OCT2_X(cir_out);
circ_area.y1 = rb_origo.y + CIRC_OCT2_Y(cir_out)- act_w1;
circ_area.y2 = rb_origo.y + CIRC_OCT2_Y(cir_out);
fill_fp(&circ_area, mask_p, b_color, b_opa);
/*Draw the octets to the left bottom corner*/
circ_area.x1 = lb_origo.x + CIRC_OCT3_X(cir_out);
circ_area.x2 = lb_origo.x + CIRC_OCT3_X(cir_out);
circ_area.y1 = lb_origo.y + CIRC_OCT3_Y(cir_out) - act_w2;
circ_area.y2 = lb_origo.y + CIRC_OCT3_Y(cir_out);
fill_fp(&circ_area, mask_p, b_color, b_opa);
circ_area.x1 = lb_origo.x + CIRC_OCT4_X(cir_out);
circ_area.x2 = lb_origo.x + CIRC_OCT4_X(cir_out) + act_w1;
circ_area.y1 = lb_origo.y + CIRC_OCT4_Y(cir_out);
circ_area.y2 = lb_origo.y + CIRC_OCT4_Y(cir_out);
fill_fp(&circ_area, mask_p, b_color, b_opa);
/*Draw the octets to the left top corner*/
/*Don't draw if the lines are common in the middle*/
if(lb_origo.y + CIRC_OCT4_Y(cir_out) > lt_origo.y + CIRC_OCT5_Y(cir_out)) {
circ_area.x1 = lt_origo.x + CIRC_OCT5_X(cir_out);
circ_area.x2 = lt_origo.x + CIRC_OCT5_X(cir_out) + act_w2;
circ_area.y1 = lt_origo.y + CIRC_OCT5_Y(cir_out);
circ_area.y2 = lt_origo.y + CIRC_OCT5_Y(cir_out);
fill_fp(&circ_area, mask_p, b_color, b_opa);
}
circ_area.x1 = lt_origo.x + CIRC_OCT6_X(cir_out);
circ_area.x2 = lt_origo.x + CIRC_OCT6_X(cir_out);
circ_area.y1 = lt_origo.y + CIRC_OCT6_Y(cir_out);
circ_area.y2 = lt_origo.y + CIRC_OCT6_Y(cir_out) + act_w1;
fill_fp(&circ_area, mask_p, b_color, b_opa);
/*Draw the octets to the right top corner*/
circ_area.x1 = rt_origo.x + CIRC_OCT7_X(cir_out);
circ_area.x2 = rt_origo.x + CIRC_OCT7_X(cir_out);
circ_area.y1 = rt_origo.y + CIRC_OCT7_Y(cir_out);
circ_area.y2 = rt_origo.y + CIRC_OCT7_Y(cir_out) + act_w2;
fill_fp(&circ_area, mask_p, b_color, b_opa);
/*Don't draw if the lines are common in the middle*/
if(rb_origo.y + CIRC_OCT1_Y(cir_out) > rt_origo.y + CIRC_OCT8_Y(cir_out)) {
circ_area.x1 = rt_origo.x + CIRC_OCT8_X(cir_out) - act_w1;
circ_area.x2 = rt_origo.x + CIRC_OCT8_X(cir_out);
circ_area.y1 = rt_origo.y + CIRC_OCT8_Y(cir_out);
circ_area.y2 = rt_origo.y + CIRC_OCT8_Y(cir_out);
fill_fp(&circ_area, mask_p, b_color, b_opa);
}
circ_next(&cir_out, &tmp_out);
/*The internal circle will be ready faster
* so check it! */
if(cir_in.y < cir_in.x) {
circ_next(&cir_in, &tmp_in);
}
}
}
static uint16_t lv_draw_rect_radius_corr(uint16_t r, cord_t w, cord_t h)
{
if(r >= (w >> 1)){
r = (w >> 1);
if(r != 0) r--;
}
if(r >= (h >> 1)) {
r = (h >> 1);
if(r != 0) r--;
}
return r;
}
#endif /*USE_LV_RECT != 0*/

View File

@@ -1,86 +0,0 @@
/**
* @file lv_draw_img.h
*
*/
#ifndef LV_DRAW_H
#define LV_DRAW_H
/*********************
* INCLUDES
*********************/
#include "../lv_objx/lv_btn.h"
#include "../lv_objx/lv_rect.h"
#include "../lv_objx/lv_line.h"
#include "../lv_objx/lv_img.h"
#include "../lv_objx/lv_label.h"
#include "misc_conf.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Draw a rectangle
* @param cords_p the coordinates of the rectangle
* @param mask_p the rectangle will be drawn only in this mask
* @param rects_p pointer to a rectangle style
* @param opa the opacity of the rectangle (0..255)
*/
#if USE_LV_RECT != 0
void lv_draw_rect(const area_t * cords_p, const area_t * mask_p,
const lv_rects_t * rects_p, opa_t opa);
#endif
/**
* Write a text
* @param cords_p coordinates of the label
* @param mask_p the label will be drawn only in this area
* @param labels_p pointer to a label style
* @param opa opacity of the text (0..255)
* @param txt 0 terminated text to write
*/
#if USE_LV_LABEL != 0
void lv_draw_label(const area_t * cords_p,const area_t * mask_p,
const lv_labels_t * labels_p, opa_t opa, const char * txt);
#endif
/**
* Draw an image
* @param cords_p the coordinates of the image
* @param mask_p the image will be drawn only in this area
* @param map_p pointer to a color_t array which contains the pixels of the image
* @param opa opacity of the image (0..255)
*/
#if USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0
void lv_draw_img(const area_t * cords_p, const area_t * mask_p,
const lv_imgs_t * imgs_p, opa_t opa, const char * fn);
#endif
/**
* Draw a line
* @param p1 first point of the line
* @param p2 second point of the line
* @param mask_pthe line will be drawn only on this area
* @param lines_p pointer to a line style
* @param opa opacity of the line (0..255)
*/
#if USE_LV_LINE != 0
void lv_draw_line(const point_t * p1, const point_t * p2, const area_t * mask_p,
const lv_lines_t * lines_p, opa_t opa);
#endif
/**********************
* MACROS
**********************/
#endif

View File

@@ -1,176 +0,0 @@
/**
* @file lv_draw_rbasic.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_draw_rbasic.h"
#include "lv_conf.h"
#include "hal/disp/disp.h"
#include "../lv_misc/font.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static void lv_rpx(cord_t x, cord_t y, const area_t * mask_p, color_t color);
/**********************
* STATIC VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Fill an area on the display
* @param cords_p coordinates of the area to fill
* @param mask_p fill only o this mask
* @param color fill color
* @param opa opacity (ignored, only for compatibility with lv_vfill)
*/
void lv_rfill(const area_t * cords_p, const area_t * mask_p,
color_t color, opa_t opa)
{
area_t masked_area;
bool union_ok = true;
if(mask_p != NULL) {
union_ok = area_union(&masked_area, cords_p, mask_p);
} else {
area_t scr_area;
area_set(&scr_area, 0, 0, LV_HOR_RES - 1, LV_VER_RES - 1);
union_ok = area_union(&masked_area, cords_p, &scr_area);
}
if(union_ok != false){
disp_area(DISP_ID_ALL, masked_area.x1, masked_area.y1, masked_area.x2, masked_area.y2);
disp_fill(DISP_ID_ALL, color);
}
}
/**
* Draw a letter to the display
* @param pos_p left-top coordinate of the latter
* @param mask_p the letter will be drawn only on this area
* @param font_p pointer to font
* @param letter a letter to draw
* @param color color of letter
* @param opa opacity of letter (ignored, only for compatibility with lv_vletter)
*/
void lv_rletter(const point_t * pos_p, const area_t * mask_p,
const font_t * font_p, uint8_t letter,
color_t color, opa_t opa)
{
uint8_t w = font_get_width(font_p, letter);
const uint8_t * bitmap_p = font_get_bitmap(font_p, letter);
uint8_t col, col_sub, row;
for(row = 0; row < font_p->height_row; row ++) {
for(col = 0, col_sub = 7; col < w; col ++, col_sub--) {
if(*bitmap_p & (1 << col_sub)) {
lv_rpx(pos_p->x + col, pos_p->y + row, mask_p, color);
}
if(col_sub == 0) {
bitmap_p++;
col_sub = 8;
}
}
/*Correction if the letter is short*/
bitmap_p += font_p->width_byte - ((w >> 3) + 1);
/*Go to the next row*/
bitmap_p ++;
}
}
/**
* Draw a color map to the display
* @param cords_p coordinates the color map
* @param mask_p the map will drawn only on this area
* @param map_p pointer to a color_t array
* @param opa opacity of the map (ignored, only for compatibility with lv_vmap)
* @param transp true: enable transparency of LV_IMG_COLOR_TRANSP color pixels
* @param upscale true: upscale to double size (not supported)
* @param recolor mix the pixels with this color (not supported)
* @param recolor_opa the intense of recoloring (not supported)
*/
void lv_rmap(const area_t * cords_p, const area_t * mask_p,
const color_t * map_p, opa_t opa, bool transp, bool upscale,
color_t recolor, opa_t recolor_opa)
{
area_t masked_a;
bool union_ok;
union_ok = area_union(&masked_a, cords_p, mask_p);
/*If there are common part of the mask and map then draw the map*/
if(union_ok == false) return;
/*Go to the first pixel*/
cord_t map_width = area_get_width(cords_p);
map_p+= (masked_a.y1 - cords_p->y1) * map_width;
map_p += masked_a.x1 - cords_p->x1;
if(transp == false) {
cord_t row;
for(row = 0; row < area_get_height(&masked_a); row++) {
cord_t col;
for(col = 0; col < area_get_width(&masked_a); col ++) {
lv_rpx(masked_a.x1 + col, masked_a.y1 + row, mask_p, map_p[col]);
}
map_p += map_width;
}
}else {
color_t transp_color = LV_COLOR_TRANSP;
cord_t row;
for(row = 0; row < area_get_height(&masked_a); row++) {
cord_t col;
for(col = 0; col < area_get_width(&masked_a); col ++) {
if(map_p[col].full != transp_color.full) {
lv_rpx(masked_a.x1 + col, masked_a.y1 + row, mask_p, map_p[col]);
}
}
map_p += map_width;
}
}
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Put a pixel to the display
* @param x x coordinate of the pixel
* @param y y coordinate of the pixel
* @param mask_p the pixel will be drawn on this area
* @param color color of the pixel
*/
static void lv_rpx(cord_t x, cord_t y, const area_t * mask_p, color_t color)
{
area_t area;
area.x1 = x;
area.y1 = y;
area.x2 = x;
area.y2 = y;
lv_rfill(&area, mask_p, color, OPA_COVER);
}

View File

@@ -1,68 +0,0 @@
/**
* @file lv_draw_rbasic..h
*
*/
#ifndef LV_DRAW_RBASIC_H
#define LV_DRAW_RBASIC_H
/*********************
* INCLUDES
*********************/
#include "misc/others/color.h"
#include "../lv_misc/area.h"
#include "../lv_misc/font.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Fill an area on the display
* @param cords_p coordinates of the area to fill
* @param mask_p fill only o this mask
* @param color fill color
* @param opa opacity (ignored, only for compatibility with lv_vfill)
*/
void lv_rfill(const area_t * cords_p, const area_t * mask_p,
color_t color, opa_t opa);
/**
* Draw a letter to the display
* @param pos_p left-top coordinate of the latter
* @param mask_p the letter will be drawn only on this area
* @param font_p pointer to font
* @param letter a letter to draw
* @param color color of letter
* @param opa opacity of letter (ignored, only for compatibility with lv_vletter)
*/
void lv_rletter(const point_t * pos_p, const area_t * mask_p,
const font_t * font_p, uint8_t letter,
color_t color, opa_t opa);
/**
* Draw a color map to the display
* @param cords_p coordinates the color map
* @param mask_p the map will drawn only on this area
* @param map_p pointer to a color_t array
* @param opa opacity of the map (ignored, only for compatibility with lv_vmap)
* @param transp true: enable transparency of LV_IMG_COLOR_TRANSP color pixels
* @param upscale true: upscale to double size (not supported)
* @param recolor mix the pixels with this color (not supported)
* @param recolor_opa the intense of recoloring (not supported)
*/
void lv_rmap(const area_t * cords_p, const area_t * mask_p,
const color_t * map_p, opa_t opa, bool transp, bool upscale,
color_t recolor, opa_t recolor_opa);
/**********************
* MACROS
**********************/
#endif

View File

@@ -1,341 +0,0 @@
/**
* @file lv_vdraw.c
*
*/
#include "lv_conf.h"
#if LV_VDB_SIZE != 0
#include <stddef.h>
#include "lvgl/lv_obj/lv_vdb.h"
/*********************
* INCLUDES
*********************/
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Fill an area in the Virtual Display Buffer
* @param cords_p coordinates of the area to fill
* @param mask_p fill only o this mask
* @param color fill color
* @param opa opacity of the area (0..255)
*/
void lv_vfill(const area_t * cords_p, const area_t * mask_p,
color_t color, opa_t opa)
{
area_t res_a;
bool union_ok;
lv_vdb_t * vdb_p = lv_vdb_get();
/*Get the union of cord and mask*/
/* The mask is already truncated to the vdb size
* in 'lv_refr_area_with_vdb' function */
union_ok = area_union(&res_a, cords_p, mask_p);
/*If there are common part of the three area then draw to the vdb*/
if(union_ok == true) {
area_t vdb_rel_a; /*Stores relative coordinates on vdb*/
vdb_rel_a.x1 = res_a.x1 - vdb_p->vdb_area.x1;
vdb_rel_a.y1 = res_a.y1 - vdb_p->vdb_area.y1;
vdb_rel_a.x2 = res_a.x2 - vdb_p->vdb_area.x1;
vdb_rel_a.y2 = res_a.y2 - vdb_p->vdb_area.y1;
color_t * vdb_buf_tmp = vdb_p->buf;
uint32_t vdb_width = area_get_width(&vdb_p->vdb_area);
/*Move the vdb_tmp to the first row*/
vdb_buf_tmp += vdb_width * vdb_rel_a.y1;
/*Set all row in vdb to the given color*/
cord_t row;
uint32_t col;
/*Run simpler function without opacity*/
if(opa == OPA_COVER) {
for(row = vdb_rel_a.y1; row <= vdb_rel_a.y2; row++) {
for(col = vdb_rel_a.x1; col <= vdb_rel_a.x2; col++) {
vdb_buf_tmp[col] = color;
}
vdb_buf_tmp += vdb_width;
}
}
/*Calculate the alpha too*/
else {
for(row = vdb_rel_a.y1; row <= vdb_rel_a.y2; row++) {
for(col = vdb_rel_a.x1; col <= vdb_rel_a.x2; col++) {
color_t c = color_mix(color, vdb_buf_tmp[col], opa);
vdb_buf_tmp[col] = c;
}
vdb_buf_tmp += vdb_width;
}
}
}
}
/**
* Draw a letter in the Virtual Display Buffer
* @param pos_p left-top coordinate of the latter
* @param mask_p the letter will be drawn only on this area
* @param font_p pointer to font
* @param letter a letter to draw
* @param color color of letter
* @param opa opacity of letter (0..255)
*/
void lv_vletter(const point_t * pos_p, const area_t * mask_p,
const font_t * font_p, uint8_t letter,
color_t color, opa_t opa)
{
if(font_p == NULL) return;
uint8_t letter_w = font_get_width(font_p, letter);
uint8_t letter_h = font_get_height(font_p);
const uint8_t * map_p = font_get_bitmap(font_p, letter);
if(map_p == NULL) return;
/*If the letter is completely out of mask don't draw it */
if(pos_p->x + letter_w < mask_p->x1 || pos_p->x > mask_p->x2 ||
pos_p->y + letter_h < mask_p->y1 || pos_p->y > mask_p->y2) return;
lv_vdb_t * vdb_p = lv_vdb_get();
cord_t vdb_width = area_get_width(&vdb_p->vdb_area);
color_t * vdb_buf_tmp = vdb_p->buf;
cord_t col, row;
uint8_t col_bit;
uint8_t col_byte_cnt;
cord_t col_start = pos_p->x > mask_p->x1 ? 0 : mask_p->x1 - pos_p->x;
cord_t col_end = pos_p->x + letter_w < mask_p->x2 ? letter_w : mask_p->x2 - pos_p->x + 1;
cord_t row_start = pos_p->y > mask_p->y1 ? 0 : mask_p->y1 - pos_p->y;
cord_t row_end = pos_p->y + letter_h < mask_p->y2 ? letter_h : mask_p->y2 - pos_p->y + 1;
/*Set a pointer on VDB to the first pixel of the letter*/
vdb_buf_tmp += ((pos_p->y - vdb_p->vdb_area.y1) * vdb_width)
+ pos_p->x - vdb_p->vdb_area.x1;
/*If the letter is partially out of mask the move there on VDB*/
vdb_buf_tmp += (row_start * vdb_width) + col_start;
/*Move on the map too*/
map_p += (row_start * font_p->width_byte) + (col_start>>3);
for(row = row_start; row < row_end; row ++) {
col_byte_cnt = 0;
col_bit = 7 - (col_start % 8);
for(col = col_start; col < col_end; col ++) {
if((*map_p & (1 << col_bit)) != 0) {
if(opa == OPA_COVER) *vdb_buf_tmp = color;
else *vdb_buf_tmp = color_mix(color, *vdb_buf_tmp, opa);
}
vdb_buf_tmp++;
/*Use a col. more times depending on LV_UPSCALE_FONT*/
if(col_bit != 0) col_bit --;
else {
col_bit = 7;
col_byte_cnt ++;
map_p ++;
}
}
map_p += font_p->width_byte - col_byte_cnt;
vdb_buf_tmp += vdb_width - (col_end - col_start); /*Next row in VDB*/
}
}
/**
* Draw a color map to the display
* @param cords_p coordinates the color map
* @param mask_p the map will drawn only on this area
* @param map_p pointer to a color_t array
* @param opa opacity of the map (ignored, only for compatibility with lv_vmap)
* @param transp true: enable transparency of LV_IMG_COLOR_TRANSP color pixels
* @param upscale true: upscale to double size
* @param recolor mix the pixels with this color
* @param recolor_opa the intense of recoloring
*/
void lv_vmap(const area_t * cords_p, const area_t * mask_p,
const color_t * map_p, opa_t opa, bool transp, bool upscale,
color_t recolor, opa_t recolor_opa)
{
area_t masked_a;
bool union_ok;
lv_vdb_t * vdb_p = lv_vdb_get();
/*Get the union of map size and mask*/
/* The mask is already truncated to the vdb size
* in 'lv_refr_area_with_vdb' function */
union_ok = area_union(&masked_a, cords_p, mask_p);
/*If there are common part of the three area then draw to the vdb*/
if(union_ok == false) return;
uint8_t ds_shift = 0;
if(upscale != false) ds_shift = 1;
/*If the map starts OUT of the masked area then calc. the first pixel*/
cord_t map_width = area_get_width(cords_p) >> ds_shift;
if(cords_p->y1 < masked_a.y1) {
map_p += (uint32_t) map_width * ((masked_a.y1 - cords_p->y1) >> ds_shift);
}
if(cords_p->x1 < masked_a.x1) {
map_p += (masked_a.x1 - cords_p->x1) >> ds_shift;
}
/*Stores coordinates relative to the act vdb*/
masked_a.x1 = masked_a.x1 - vdb_p->vdb_area.x1;
masked_a.y1 = masked_a.y1 - vdb_p->vdb_area.y1;
masked_a.x2 = masked_a.x2 - vdb_p->vdb_area.x1;
masked_a.y2 = masked_a.y2 - vdb_p->vdb_area.y1;
cord_t vdb_width = area_get_width(&vdb_p->vdb_area);
color_t * vdb_buf_tmp = vdb_p->buf;
vdb_buf_tmp += (uint32_t) vdb_width * masked_a.y1; /*Move to the first row*/
map_p -= (masked_a.x1 >> ds_shift);
if(upscale != false) {
cord_t row;
cord_t col;
color_t transp_color = LV_COLOR_TRANSP;
color_t color_tmp;
color_t prev_color = COLOR_BLACK;
cord_t map_col;
color_tmp = color_mix(recolor, prev_color, recolor_opa);
for(row = masked_a.y1; row <= masked_a.y2; row++) {
for(col = masked_a.x1; col <= masked_a.x2; col ++) {
map_col = col >> 1;
if(map_p[map_col].full != prev_color.full) {
prev_color.full = map_p[map_col].full;
color_tmp = color_mix(recolor, prev_color, recolor_opa);
}
if(transp == false || map_p[map_col].full != transp_color.full) {
vdb_buf_tmp[col] = color_mix( color_tmp, vdb_buf_tmp[col], opa);
}
}
if((row & 0x1) != 0) map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width ; /*Next row on the VDB*/
}
}
else {
if(transp == false) { /*Simply copy the pixels to the VDB*/
cord_t row;
if(opa == OPA_COVER) { /*no opa */
for(row = masked_a.y1; row <= masked_a.y2; row++) {
memcpy(&vdb_buf_tmp[masked_a.x1],
&map_p[masked_a.x1],
area_get_width(&masked_a) * sizeof(color_t));
map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width; /*Next row on the VDB*/
}
} else {
cord_t col;
for(row = masked_a.y1; row <= masked_a.y2; row++) {
for(col = masked_a.x1; col <= masked_a.x2; col ++) {
vdb_buf_tmp[col] = color_mix( map_p[col], vdb_buf_tmp[col], opa);
}
map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width; /*Next row on the VDB*/
}
}
/*To recolor draw simply a rectangle above the image*/
#if LV_VDB_SIZE != 0
lv_vfill(cords_p, mask_p, recolor, recolor_opa);
#endif
} else { /*transp == true: Check all pixels */
cord_t row;
cord_t col;
color_t transp_color = LV_COLOR_TRANSP;
if(recolor_opa == OPA_TRANSP) {/*No recolor*/
if(opa == OPA_COVER) { /*no opa */
for(row = masked_a.y1; row <= masked_a.y2; row++) {
for(col = masked_a.x1; col <= masked_a.x2; col ++) {
if(map_p[col].full != transp_color.full) {
vdb_buf_tmp[col] = map_p[col];
}
}
map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width; /*Next row on the VDB*/
}
} else {
for(row = masked_a.y1; row <= masked_a.y2; row++) {
for(col = masked_a.x1; col <= masked_a.x2; col ++) {
if(map_p[col].full != transp_color.full) {
vdb_buf_tmp[col] = color_mix( map_p[col], vdb_buf_tmp[col], opa);
}
}
map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width; /*Next row on the VDB*/
}
}
} else { /*Recolor needed*/
color_t color_tmp;
if(opa == OPA_COVER) { /*no opa */
for(row = masked_a.y1; row <= masked_a.y2; row++) {
for(col = masked_a.x1; col <= masked_a.x2; col ++) {
if(map_p[col].full != transp_color.full) {
color_tmp = color_mix(recolor, map_p[col], recolor_opa);
vdb_buf_tmp[col] = color_tmp;
}
}
map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width; /*Next row on the VDB*/
}
} else {
for(row = masked_a.y1; row <= masked_a.y2; row++) {
for(col = masked_a.x1; col <= masked_a.x2; col ++) {
if(map_p[col].full != transp_color.full) {
color_tmp = color_mix(recolor, map_p[col], recolor_opa);
vdb_buf_tmp[col] = color_mix(color_tmp, vdb_buf_tmp[col], opa);
}
}
map_p += map_width; /*Next row on the map*/
vdb_buf_tmp += vdb_width; /*Next row on the VDB*/
}
}
}
}
}
}
/**********************
* STATIC FUNCTIONS
**********************/
#endif

View File

@@ -1,78 +0,0 @@
/**
* @file lv_draw_vbasic.h
*
*/
#ifndef LV_DRAW_VBASIC_H
#define LV_DRAW_VBASIC_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if LV_VDB_SIZE != 0
#include "misc/others/color.h"
#include "../lv_misc/area.h"
#include "../lv_misc/font.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Fill an area in the Virtual Display Buffer
* @param cords_p coordinates of the area to fill
* @param mask_p fill only o this mask
* @param color fill color
* @param opa opacity of the area (0..255)
*/
void lv_vfill(const area_t * cords_p, const area_t * mask_p,
color_t color, opa_t opa);
/**
* Draw a letter in the Virtual Display Buffer
* @param pos_p left-top coordinate of the latter
* @param mask_p the letter will be drawn only on this area
* @param font_p pointer to font
* @param letter a letter to draw
* @param color color of letter
* @param opa opacity of letter (0..255)
*/
void lv_vletter(const point_t * pos_p, const area_t * mask_p,
const font_t * font_p, uint8_t letter,
color_t color, opa_t opa);
/**
* Draw a color map to the display
* @param cords_p coordinates the color map
* @param mask_p the map will drawn only on this area
* @param map_p pointer to a color_t array
* @param opa opacity of the map (ignored, only for compatibility with lv_vmap)
* @param transp true: enable transparency of LV_IMG_COLOR_TRANSP color pixels
* @param upscale true: upscale to double size
* @param recolor mix the pixels with this color
* @param recolor_opa the intense of recoloring
*/
void lv_vmap(const area_t * cords_p, const area_t * mask_p,
const color_t * map_p, opa_t opa, bool transp, bool upscale,
color_t recolor, opa_t recolor_opa);
/**********************
* MACROS
**********************/
#endif
#endif

View File

@@ -1,31 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_CLOSE != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_close [] = { /*Width = 14, Height = 15*/
14, /*Width*/
15, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 6339, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 4258, 2016,
6371, 0, 32, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2113, 0, 4226,
10597, 0, 0, 0, 2016, 2016, 2016, 2016, 2016, 2016, 32, 0, 0, 8452,
2016, 10597, 0, 0, 0, 2016, 2016, 2016, 2016, 32, 0, 0, 8452, 2016,
2016, 2016, 10597, 0, 0, 0, 2016, 2016, 32, 0, 0, 8452, 2016, 2016,
2016, 2016, 2016, 10565, 0, 0, 32, 2113, 0, 0, 6339, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 8452, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 0, 0, 0, 0, 35953, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 32, 0, 0, 0, 0, 0, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2113, 0, 0, 6339, 8484, 0, 0, 32, 2016, 2016, 2016,
2016, 2016, 32, 0, 0, 8452, 2016, 2016, 10597, 0, 0, 0, 2016, 2016,
2016, 32, 0, 0, 8452, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 2016,
2113, 0, 0, 6339, 2016, 2016, 2016, 2016, 2016, 2016, 10565, 0, 0, 32,
19049, 0, 8452, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12678, 0, 14823,
2016, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 2016,
};
#endif

View File

@@ -1,26 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_DOWN != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_down [] = { /*Width = 15, Height = 10*/
15, /*Width*/
10, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33840, 2016, 2016,
2016, 12710, 0, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 4226, 0, 35953, 2016,
14791, 0, 0, 0, 19049, 2016, 2016, 2016, 2016, 2016, 4226, 0, 0, 0, 35953,
10565, 0, 0, 0, 0, 16936, 2016, 2016, 2016, 2145, 0, 0, 0, 0, 29614,
2016, 8484, 0, 0, 0, 0, 19049, 2016, 4226, 0, 0, 0, 0, 29582, 2016,
2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31695, 2016, 2016,
2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 29582, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 29582, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 8484, 0, 0, 0, 29582, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 8484, 0, 29582, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,30 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_DRIVER != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_driver [] = { /*Width = 16, Height = 14*/
16, /*Width*/
14, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 2016, 2016, 2016,
2016, 2016, 2016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33808, 2016, 2016,
2016, 2016, 14823, 2113, 44373, 44373, 44373, 44373, 44373, 44373, 44373, 44373, 6339, 8452, 2016, 2016,
2016, 2016, 0, 23275, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 27469, 0, 2016, 2016,
2016, 29614, 0, 46518, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 48599, 0, 23275, 2016,
2016, 4258, 4258, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 4226, 2113, 2016,
2016, 0, 27501, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 23243, 0, 40147,
21130, 0, 50744, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 44373, 0, 12710,
4226, 0, 21162, 21162, 21162, 57083, 65535, 65535, 65535, 65535, 61309, 21162, 21162, 19017, 0, 0,
2145, 0, 0, 0, 0, 23275, 65535, 65535, 65535, 65535, 31695, 0, 0, 0, 0, 0,
2145, 0, 0, 0, 0, 32, 21162, 21162, 21162, 21162, 2145, 0, 0, 0, 0, 0,
2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
#endif

View File

@@ -1,32 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_FILE != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_file [] = { /*Width = 12, Height = 16*/
12, /*Width*/
16, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
23275, 21162, 21162, 21162, 21162, 21162, 2016, 2016, 2016, 2016, 2016, 2016,
2145, 0, 0, 0, 0, 0, 2113, 2016, 2016, 2016, 2016, 2016,
2145, 0, 42260, 44373, 44373, 2113, 12678, 2145, 2016, 2016, 2016, 2016,
2145, 0, 63390, 65535, 65535, 2145, 59196, 16904, 2113, 2016, 2016, 2016,
2145, 0, 63390, 65535, 65535, 2145, 63390, 63422, 16904, 2113, 2016, 2016,
2145, 0, 63390, 65535, 65535, 2145, 63390, 65535, 63422, 16904, 2113, 2016,
2145, 0, 63390, 65535, 65535, 2145, 21130, 21162, 21162, 19017, 0, 2145,
2145, 0, 63390, 65535, 65535, 44405, 44373, 44373, 44373, 44373, 2113, 0,
2145, 0, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 2145, 0,
2145, 0, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 2145, 0,
2145, 0, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 2145, 0,
2145, 0, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 2145, 0,
2145, 0, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 2145, 0,
2145, 0, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 2145, 0,
2145, 0, 21130, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 32, 0,
2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
#endif

View File

@@ -1,28 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_FOLDER != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_folder [] = { /*Width = 16, Height = 12*/
16, /*Width*/
12, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 40147, 21162, 21162, 21162, 35921, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 23275, 2113, 0, 0, 0, 0, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 2016,
2016, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
25388, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162, 21162,
12678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6339,
21130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14791,
29582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23243,
38034, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31695,
2016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38066,
2016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2016,
2016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2016,
};
#endif

View File

@@ -1,31 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_LEFT != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_left [] = { /*Width = 10, Height = 15*/
10, /*Width*/
15, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 27501, 21130, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 29582, 0, 0, 21130, 2016,
2016, 2016, 2016, 2016, 31695, 0, 0, 0, 0, 27469,
2016, 2016, 2016, 29582, 0, 0, 0, 0, 4226, 2016,
2016, 2016, 29582, 0, 0, 0, 0, 4226, 2016, 2016,
2016, 29582, 0, 0, 0, 0, 4226, 2016, 2016, 2016,
29582, 0, 0, 0, 0, 4226, 2016, 2016, 2016, 2016,
0, 0, 0, 0, 0, 2016, 2016, 2016, 2016, 2016,
19049, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016,
2016, 19049, 0, 0, 0, 0, 8484, 2016, 2016, 2016,
2016, 2016, 21130, 0, 0, 0, 0, 8484, 2016, 2016,
2016, 2016, 2016, 21130, 0, 0, 0, 0, 8484, 2016,
2016, 2016, 2016, 2016, 19017, 0, 0, 0, 0, 23243,
2016, 2016, 2016, 2016, 2016, 21130, 0, 0, 12710, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 21130, 14791, 2016, 2016,
};
#endif

View File

@@ -1,28 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_OK != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_ok [] = { /*Width = 16, Height = 12*/
16, /*Width*/
12, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 32, 2113, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2113, 0, 0, 10597,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 32, 0, 0, 8452, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 32, 0, 0, 8452, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 32, 0, 0, 8452, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2113, 0, 0, 6371, 2016, 2016, 2016, 2016,
2016, 4258, 0, 40147, 2016, 2016, 2016, 32, 0, 0, 8452, 2016, 2016, 2016, 2016, 2016,
16936, 0, 0, 32, 2016, 2016, 2113, 0, 0, 6371, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 10565, 0, 0, 32, 2113, 0, 0, 6371, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 12710, 0, 0, 0, 0, 8452, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 12710, 0, 0, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 12710, 8484, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,31 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_RIGHT != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_right [] = { /*Width = 10, Height = 15*/
10, /*Width*/
15, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 21130, 27501, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 21130, 0, 0, 29582, 2016, 2016, 2016, 2016, 2016,
27469, 0, 0, 0, 0, 31695, 2016, 2016, 2016, 2016,
2016, 4226, 0, 0, 0, 0, 29582, 2016, 2016, 2016,
2016, 2016, 4226, 0, 0, 0, 0, 29582, 2016, 2016,
2016, 2016, 2016, 4226, 0, 0, 0, 0, 29582, 2016,
2016, 2016, 2016, 2016, 4226, 0, 0, 0, 0, 29582,
2016, 2016, 2016, 2016, 2016, 0, 0, 0, 0, 0,
2016, 2016, 2016, 2016, 8484, 0, 0, 0, 0, 19049,
2016, 2016, 2016, 8484, 0, 0, 0, 0, 19049, 2016,
2016, 2016, 8484, 0, 0, 0, 0, 21130, 2016, 2016,
2016, 8484, 0, 0, 0, 0, 21130, 2016, 2016, 2016,
23243, 0, 0, 0, 0, 19017, 2016, 2016, 2016, 2016,
2016, 12710, 0, 0, 21130, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 14791, 21130, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,26 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_UP != 0 && LV_APP_USE_INTERNAL_ICONS == 1
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_up [] = { /*Width = 15, Height = 10*/
15, /*Width*/
10, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 8484, 0, 29582, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 8484, 0, 0, 0, 29582, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 29582, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 29582, 2016, 2016, 2016,
2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31695, 2016, 2016,
2016, 8484, 0, 0, 0, 0, 19049, 2016, 4226, 0, 0, 0, 0, 29582, 2016,
10565, 0, 0, 0, 0, 16936, 2016, 2016, 2016, 2145, 0, 0, 0, 0, 29614,
14791, 0, 0, 0, 19049, 2016, 2016, 2016, 2016, 2016, 4226, 0, 0, 0, 35953,
2016, 12710, 0, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 4226, 0, 35953, 2016,
2016, 2016, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33840, 2016, 2016,
};
#endif

View File

@@ -1,49 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_CLOSE != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_close [] = { /*Width = 35, Height = 33*/
35, /*Width*/
33, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 25356, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 23243, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 33808, 6371, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 4258, 29614, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 25388, 10565, 32, 0, 2145, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 14791, 0, 0, 0, 0, 4226, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 6339, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 16904, 32, 0, 0, 0, 0, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 32, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 31695, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 2145, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4258, 0, 0, 0, 0, 2145, 10597, 29582, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 2145, 16904, 2016, 2016, 2016, 2016, 19049, 4226, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 4226, 23275, 2016, 2016, 27501, 4258, 0, 0, 0, 0, 2113, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 32, 6339, 10565, 10597, 8452, 32, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 10565, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12678, 2145, 0, 0, 0, 0, 0, 0, 2113, 8452, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 6371, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 6339, 0, 0, 0, 0, 0, 0, 4258, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 32, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 32, 2113, 4226, 2145, 0, 0, 0, 0, 2145, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 6339, 0, 0, 0, 0, 2145, 12710, 19049, 21162, 16904, 4258, 0, 0, 0, 0, 4226, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 32, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 4226, 16936, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 10597, 29582, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 2145, 16904, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2113, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 2145, 21162, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 2113, 14823, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 12678, 0, 0, 0, 0, 2145, 10565, 27469, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 14791, 4226, 0, 0, 0, 0, 8484, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 23243, 6339, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 14823, 2113, 0, 0, 2113, 19049, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 21162, 6371, 4226, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 14823, 4258, 4258, 16936, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 21162, 19017, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 19049, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,36 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_DOWN != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_down [] = { /*Width = 29, Height = 20*/
29, /*Width*/
20, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 23243, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 31695, 2016, 2016, 2016,
2016, 2016, 2016, 16904, 4258, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8452, 4226, 12678, 2016, 2016, 2016,
2016, 2016, 16904, 2113, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 2113, 19017, 2016, 2016,
33808, 16904, 4258, 0, 0, 0, 0, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 2113, 12710, 2016,
19049, 2145, 0, 0, 0, 0, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 2145, 23243,
16936, 32, 0, 0, 0, 0, 0, 0, 0, 6371, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 32, 0, 0, 0, 0, 0, 0, 2113, 19049,
29582, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 4258, 19049, 2016, 2016, 2016, 2016, 2016, 31695, 6371, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29582,
2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29582, 2016,
2016, 2016, 29614, 12710, 4226, 0, 0, 0, 0, 0, 0, 32, 8452, 19049, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29614, 2016, 2016,
2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 0, 0, 32, 4226, 8484, 8452, 2113, 0, 0, 0, 0, 0, 0, 2113, 14791, 31695, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 31695, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 31695, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12678, 29614, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 14791, 6371, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,45 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_DRIVER != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_driver [] = { /*Width = 32, Height = 29*/
32, /*Width*/
29, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 31695, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31695, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 23243, 10597, 12678, 12678, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12678, 10597, 21162, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 10597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 29614, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 23275, 4226, 0, 4226, 6371, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6371, 4226, 0, 2145, 16936, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 31727, 12678, 32, 4258, 25356, 35921, 33808, 33808, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 35921, 25388, 8452, 2113, 6371, 25356, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 21162, 4258, 2145, 14823, 42260, 54938, 52825, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 50744, 52825, 54938, 44373, 19017, 4258, 32, 16904, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 12678, 0, 10565, 27501, 54938, 65535, 63422, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63390, 63422, 65535, 54970, 31695, 12710, 0, 10565, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 6339, 0, 19017, 40147, 61277, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61309, 42292, 21162, 2113, 4258, 31695, 2016, 2016, 2016,
2016, 2016, 2016, 25388, 2145, 4226, 29614, 50712, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 63390, 50744, 31727, 4258, 32, 19049, 2016, 2016, 2016,
2016, 2016, 2016, 14791, 0, 8484, 40179, 59196, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 59196, 40179, 8484, 0, 8484, 27501, 2016, 2016,
2016, 2016, 21162, 4226, 0, 14791, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 48631, 12710, 0, 0, 16936, 2016, 2016,
2016, 2016, 12710, 0, 2145, 21162, 54970, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 19049, 32, 0, 10565, 2016, 2016,
2016, 2016, 8452, 0, 12710, 31727, 57083, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 57051, 29582, 8484, 0, 6371, 2016, 2016,
2016, 29582, 4226, 2145, 25356, 44373, 61309, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61277, 38066, 19049, 2113, 2145, 23243, 2016,
2016, 16936, 32, 6371, 38034, 57083, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 50712, 29614, 6339, 0, 10597, 29614,
27469, 6371, 0, 8452, 35953, 52857, 57051, 59164, 57083, 59196, 63422, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65503, 59196, 57083, 59164, 54970, 46518, 29614, 6371, 0, 2113, 21130,
19017, 0, 0, 4258, 23243, 31727, 31727, 31727, 29614, 38066, 54970, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 59164, 38066, 29614, 31727, 31695, 29582, 19049, 4226, 0, 0, 14791,
14823, 0, 0, 2145, 10597, 14823, 14791, 12710, 10597, 21130, 42260, 57051, 65503, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 61277, 46486, 23243, 10597, 12710, 14791, 14791, 10565, 2113, 0, 0, 10597,
14823, 0, 0, 0, 2113, 2145, 2145, 2113, 32, 8452, 23275, 42260, 63390, 65535, 65535, 65535, 65535, 65535, 65535, 63422, 48599, 29582, 8484, 32, 2113, 2145, 2145, 2113, 0, 0, 0, 12678,
16904, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10565, 25388, 50712, 61277, 59164, 57083, 57083, 59164, 61277, 50744, 31727, 14823, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 10565, 27469, 33840, 33808, 31727, 31727, 33808, 33840, 27501, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 14823, 14791, 14791, 14791, 14791, 14823, 10597, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 2145, 2145, 2145, 2145, 2145, 2145, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
14823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10597,
12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484,
23243, 6371, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 4226, 19017,
2016, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 31695, 2016,
};
#endif

View File

@@ -1,49 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_FILE != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_file [] = { /*Width = 24, Height = 33*/
24, /*Width*/
33, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 31695, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31695, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
27469, 12678, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12678, 12678, 19017, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
19017, 2113, 2113, 2113, 32, 0, 0, 0, 0, 0, 2113, 4226, 6339, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
14791, 0, 0, 0, 4226, 6339, 6339, 6339, 6371, 4258, 0, 0, 0, 6371, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
14823, 0, 0, 4258, 23275, 33808, 33808, 33808, 35921, 25388, 6371, 0, 4226, 6339, 6371, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
16904, 0, 0, 8484, 38066, 52857, 52825, 52857, 54970, 40179, 10565, 2145, 19017, 19049, 4226, 6371, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
16904, 0, 0, 10597, 46518, 63422, 63422, 65503, 65535, 48631, 10597, 8484, 42260, 46486, 19017, 6339, 6339, 19049, 2016, 2016, 2016, 2016, 2016, 2016,
16904, 0, 0, 12678, 50712, 65535, 65535, 65535, 65535, 52857, 12678, 10597, 52825, 61309, 38066, 19017, 2145, 6339, 27501, 2016, 2016, 2016, 2016, 2016,
16904, 0, 0, 12678, 50712, 65535, 65535, 65535, 65535, 52825, 10597, 10597, 50712, 65535, 61277, 44405, 19017, 4258, 6339, 19017, 2016, 2016, 2016, 2016,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 52825, 10597, 10597, 50712, 65535, 65535, 61309, 38066, 19049, 4226, 6371, 27501, 2016, 2016, 2016,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 52825, 10597, 10597, 50744, 65535, 65535, 65535, 63390, 48599, 21162, 8452, 6371, 19049, 2016, 2016,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 52825, 10597, 8452, 42260, 57083, 57083, 59164, 61277, 50712, 27469, 10565, 0, 4226, 27501, 2016,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 52825, 10597, 32, 19049, 29582, 29582, 29614, 29614, 27469, 21130, 10597, 32, 0, 4258, 23275,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 54938, 21162, 8484, 19017, 23243, 23243, 23243, 23243, 23243, 25356, 19017, 4226, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 59196, 42260, 33808, 35921, 35953, 35953, 35953, 35953, 38034, 40147, 29614, 8452, 0, 0, 10597,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 63422, 54970, 50744, 50712, 50712, 50712, 50712, 50712, 50744, 52857, 40179, 12678, 0, 0, 10597,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 63422, 63390, 63390, 63390, 63390, 63390, 63390, 63422, 65535, 50712, 14823, 0, 0, 10597,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 48631, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 52857, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 50712, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 54938, 16904, 0, 0, 12678,
16904, 0, 0, 12678, 52825, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 65535, 57051, 16904, 0, 0, 12678,
16904, 0, 0, 10565, 42292, 59164, 59164, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 57083, 59164, 61309, 46518, 14791, 0, 0, 12678,
16904, 0, 0, 4258, 23275, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 33840, 25388, 8452, 0, 0, 12678,
14823, 0, 0, 32, 8484, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 10565, 2113, 0, 0, 10597,
12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484,
23243, 6371, 6371, 6371, 6371, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6339, 6371, 6371, 6371, 4226, 19017,
2016, 31727, 33808, 33808, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 33808, 33808, 31727, 31695, 2016,
};
#endif

View File

@@ -1,44 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_FOLDER != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_folder [] = { /*Width = 34, Height = 28*/
34, /*Width*/
28, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 31727, 31727, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 25356, 16904, 12710, 12710, 12710, 12710, 14823, 21162, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 27469, 12710, 6339, 4226, 2145, 2145, 2145, 2145, 2145, 4226, 10597, 27469, 2016, 33808, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31727, 31695, 29614, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 27469, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8484, 14791, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 12710, 10597, 8484, 23243, 2016, 2016, 2016,
2016, 2016, 2016, 16904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016,
2016, 2016, 2016, 23243, 6339, 8452, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8484, 8452, 8452, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6371, 6339, 2145, 19017, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 31695, 29582, 27501, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 29582, 27501, 29582, 29582, 2016, 2016,
2016, 29582, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14823, 14791, 12678, 25388, 2016,
2016, 25356, 8452, 4226, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 2145, 19049, 2016,
2016, 25356, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19017, 2016,
2016, 29582, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016,
2016, 33808, 14823, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113, 8484, 27469, 2016,
2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 12678, 31695, 2016,
2016, 2016, 23243, 4258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 16904, 2016, 2016,
2016, 2016, 25388, 6339, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4226, 19049, 2016, 2016,
2016, 2016, 29614, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4258, 23275, 2016, 2016,
2016, 2016, 33808, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6339, 27469, 2016, 2016,
2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 31695, 2016, 2016,
2016, 2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 2016, 2016, 2016,
2016, 2016, 2016, 10565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 2016, 2016, 2016,
2016, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 2016, 2016, 2016,
2016, 2016, 2016, 19049, 4226, 6371, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 8452, 6371, 4226, 16936, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 31695, 31727, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 33808, 31727, 31695, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,46 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_LEFT != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_left [] = { /*Width = 19, Height = 30*/
19, /*Width*/
30, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 33808, 29582, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 14791, 10565, 21162, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10565, 32, 0, 6371, 23243, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12678, 32, 0, 0, 0, 6371, 23243, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 10597, 32, 0, 0, 0, 0, 0, 8452, 25356,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31695, 14791, 2113, 0, 0, 0, 0, 0, 0, 2145, 21130,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 8452, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 29582, 12678, 32, 0, 0, 0, 0, 0, 0, 32, 8452, 23275, 2016,
2016, 2016, 2016, 2016, 2016, 29614, 10597, 32, 0, 0, 0, 0, 0, 0, 0, 8452, 31727, 2016, 2016,
2016, 2016, 2016, 2016, 29614, 12710, 32, 0, 0, 0, 0, 0, 0, 32, 8452, 25356, 2016, 2016, 2016,
2016, 2016, 2016, 29614, 10597, 32, 0, 0, 0, 0, 0, 0, 0, 8452, 31727, 2016, 2016, 2016, 2016,
2016, 2016, 29614, 12710, 32, 0, 0, 0, 0, 0, 0, 2113, 8452, 25356, 2016, 2016, 2016, 2016, 2016,
2016, 29614, 10597, 32, 0, 0, 0, 0, 0, 0, 0, 8452, 31727, 2016, 2016, 2016, 2016, 2016, 2016,
29614, 12678, 32, 0, 0, 0, 0, 0, 0, 32, 8452, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
12678, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
8484, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
23243, 6339, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 21162, 6371, 0, 0, 0, 0, 0, 0, 0, 32, 14791, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 21162, 6371, 0, 0, 0, 0, 0, 0, 0, 4226, 12710, 29614, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 23243, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 2145, 12710, 29614, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 23243, 8452, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 2145, 12710, 29614, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 12710, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 0, 0, 0, 4226, 19017,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 6371, 0, 0, 0, 0, 0, 0, 4258, 19049,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 0, 0, 0, 0, 2113, 16904, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 8452, 0, 0, 4258, 16904, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21162, 8452, 4258, 16904, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 21162, 31727, 2016, 2016, 2016,
};
#endif

View File

@@ -1,47 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_OK != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_ok [] = { /*Width = 34, Height = 31*/
34, /*Width*/
31, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 6339, 6371, 21130, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 6339, 29582, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 32, 8452, 25388, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 4258, 0, 0, 0, 0, 2145, 10565, 29582, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19017, 4226, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 0, 10565, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 27501, 6339, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 25356, 10565, 6339, 14823, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 19049, 4258, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 8484, 0, 0, 2113, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 4226, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 31727, 12710, 2113, 0, 0, 0, 2145, 16936, 2016, 2016, 2016, 2016, 21130, 4258, 0, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 33808, 14823, 4226, 0, 0, 0, 0, 4226, 25356, 2016, 2016, 29614, 6371, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 14791, 0, 0, 0, 0, 32, 6339, 10565, 12678, 8484, 2113, 0, 0, 0, 0, 10597, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 31727, 14791, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2145, 10597, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 16904, 2113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 16904, 4258, 0, 0, 0, 0, 0, 0, 2145, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 2113, 0, 0, 0, 0, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 4258, 0, 0, 2145, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 16904, 2113, 0, 12678, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 19017, 16904, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,46 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_RIGHT != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_right [] = { /*Width = 19, Height = 30*/
19, /*Width*/
30, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 29582, 33808, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 21162, 10565, 14791, 27501, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 23243, 6371, 0, 32, 10565, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 23243, 6371, 0, 0, 0, 32, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
25356, 8452, 0, 0, 0, 0, 0, 32, 10597, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
21130, 2145, 0, 0, 0, 0, 0, 0, 2113, 14791, 31695, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 8452, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29582, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 23275, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29582, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 25356, 8452, 2113, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29614,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 12678,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 6371, 0, 0, 0, 0, 0, 0, 0, 0, 8484,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 29582, 10597, 2113, 0, 0, 0, 0, 0, 0, 0, 6339, 23243,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 0, 0, 0, 6371, 21162, 2016,
2016, 2016, 2016, 2016, 2016, 29614, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 6371, 21162, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 23243, 2016, 2016, 2016,
2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 8452, 23243, 2016, 2016, 2016, 2016, 2016,
2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
19017, 4226, 0, 0, 0, 0, 0, 0, 0, 4258, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
19049, 4258, 0, 0, 0, 0, 0, 0, 6371, 21130, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 16904, 2113, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 16904, 4258, 0, 0, 8452, 23243, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 16904, 4258, 8452, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 31727, 21162, 25388, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
};
#endif

View File

@@ -1,36 +0,0 @@
#include "img_conf.h"
#include "lv_conf.h"
#if USE_IMG_UP != 0 && LV_APP_USE_INTERNAL_ICONS == 2
#include <stdint.h>
#include "misc/others/color.h"
const color_int_t img_up [] = { /*Width = 29, Height = 20*/
29, /*Width*/
20, /*Heigth*/
16, /*Color depth = 16*/
1, /*Flags: Transp = 1*/
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 14791, 6371, 12678, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12710, 29614, 2016, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 29614, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29614, 2016, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 2016, 2016, 12710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 12678, 29614, 2016, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 31695, 12710, 4226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 31695, 2016, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 14791, 32, 0, 0, 0, 0, 0, 0, 32, 4226, 8484, 8452, 2113, 0, 0, 0, 0, 0, 0, 2113, 14791, 31695, 2016, 2016, 2016,
2016, 2016, 29614, 12710, 4226, 0, 0, 0, 0, 0, 0, 32, 8452, 19049, 2016, 2016, 8484, 0, 0, 0, 0, 0, 0, 0, 2113, 10597, 29614, 2016, 2016,
2016, 2016, 12678, 0, 0, 0, 0, 0, 0, 0, 0, 6371, 23243, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 0, 0, 0, 32, 12678, 29582, 2016,
29582, 12710, 2145, 0, 0, 0, 0, 0, 0, 0, 4258, 19049, 2016, 2016, 2016, 2016, 2016, 31695, 6371, 0, 0, 0, 0, 0, 0, 0, 32, 10597, 29582,
16936, 32, 0, 0, 0, 0, 0, 0, 0, 6371, 19049, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23243, 6371, 32, 0, 0, 0, 0, 0, 0, 2113, 19049,
19049, 2145, 0, 0, 0, 0, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 0, 0, 0, 0, 2145, 23243,
33808, 16904, 4258, 0, 0, 0, 0, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25356, 8452, 32, 0, 0, 0, 2113, 12710, 2016,
2016, 2016, 16904, 2113, 0, 0, 6339, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 31727, 8452, 0, 0, 2113, 19017, 2016, 2016,
2016, 2016, 2016, 16904, 4258, 6371, 21162, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 23275, 8452, 4226, 12678, 2016, 2016, 2016,
2016, 2016, 2016, 2016, 23243, 23275, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 2016, 25388, 31695, 2016, 2016, 2016,
};
#endif

View File

@@ -1,259 +0,0 @@
/**
* @file anim.c
*
*/
/*********************
* INCLUDES
*********************/
#include <string.h>
#include "anim.h"
#include "misc/math/math_base.h"
#include "misc/os/ptask.h"
#include "hal/systick/systick.h"
/*********************
* DEFINES
*********************/
#define ANIM_PATH_LENGTH 129 /*Elements in a path array*/
#define ANIM_PATH_START 64 /*In path array a value which corresponds to the start position*/
#define ANIM_PATH_END 192 /* ... to the end position. Not required, just for clearance.*/
#define ANIM_PATH_NORM_SHIFT 7 /*ANIM_PATH_START - ANIM_PATH_END. Must be 2^N. The exponent goes here. */
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static void anim_task (void * param);
static bool anim_ready_handler(anim_t * a);
/**********************
* STATIC VARIABLES
**********************/
static ll_dsc_t anim_ll;
static uint32_t last_task_run;
static bool anim_del_global_flag = false;
static anim_path_t anim_path_lin[] =
{64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192};
static anim_path_t anim_path_step[] =
{64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192,};
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Init. the animation module
*/
void anim_init(void)
{
ll_init(&anim_ll, sizeof(anim_t));
last_task_run = systick_get();
ptask_create(anim_task, LV_REFR_PERIOD, PTASK_PRIO_MID, NULL);
}
/**
* Create an animation
* @param anim_p an initialized 'anim_t' variable. Not required after call.
*/
void anim_create(anim_t * anim_p)
{
/*Add the new animation to the animation linked list*/
anim_t * new_anim = ll_ins_head(&anim_ll);
dm_assert(new_anim);
/*Initialize the animation descriptor*/
anim_p->playback_now = 0;
memcpy(new_anim, anim_p, sizeof(anim_t));
/*Set the start value*/
if(new_anim->fp != NULL) new_anim->fp(new_anim->var, new_anim->start);
}
/**
* Delete an animation for a variable with a given animatior function
* @param var pointer to variable
* @param fp a function pointer which is animating 'var',
* or NULL to ignore it and delete all animation with 'var
* @return true: at least 1 animation is deleted, false: no animation is deleted
*/
bool anim_del(void * var, anim_fp_t fp)
{
bool del = false;
anim_t * a;
anim_t * a_next;
a = ll_get_head(&anim_ll);
while(a != NULL) {
/*'a' might be deleted, so get the next object while 'a' is valid*/
a_next = ll_get_next(&anim_ll, a);
if(a->var == var && (a->fp == fp || fp == NULL)) {
ll_rem(&anim_ll, a);
dm_free(a);
del = true;
anim_del_global_flag = true;
}
a = a_next;
}
return del;
}
/**
* Calculate the time of an animation with a given speed and the start and end values
* @param speed speed of animation in unit/sec
* @param start start value of the animation
* @param end end value of the animation
* @return the required time [ms] for the animation with the given parameters
*/
uint16_t anim_speed_to_time(uint16_t speed, int32_t start, int32_t end)
{
int32_t d = MATH_ABS((int32_t) start - end);
uint16_t time = (int32_t)((int32_t)(d * 1000) / speed);
if(time == 0) {
time++;
}
return time;
}
/**
* Get a predefine animation path
* @param name name of the path from 'anim_path_name_t'
* @return pointer to the path array
*/
anim_path_t * anim_get_path(anim_path_name_t name)
{
switch (name) {
case ANIM_PATH_LIN:
return anim_path_lin;
break;
case ANIM_PATH_STEP:
return anim_path_step;
break;
default:
return NULL;
break;
}
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Periodically handle the animations.
* @param param unused
*/
static void anim_task (void * param)
{
uint32_t elaps;
elaps = systick_elaps(last_task_run);
anim_t * a;
anim_t * a_next;
a = ll_get_head(&anim_ll);
while(a != NULL) {
/*'a' might be deleted, so get the next object while 'a' is valid*/
a_next = ll_get_next(&anim_ll, a);
a->act_time += elaps;
if(a->act_time >= 0) {
if(a->act_time > a->time) a->act_time = a->time;
/* Get the index of the path array based on the elapsed time*/
uint8_t path_i;
if(a->time == a->act_time) {
path_i = ANIM_PATH_LENGTH - 1; /*Use the last value id the time fully elapsed*/
} else {
path_i = a->act_time * (ANIM_PATH_LENGTH - 1) / a->time;
}
/* Get the new value which will be proportional to the current element of 'path_p'
* and the 'start' and 'end' values*/
int32_t new_val;
new_val = (int32_t)(a->path[path_i] - ANIM_PATH_START) * (a->end - a->start);
new_val = new_val >> ANIM_PATH_NORM_SHIFT;
new_val += a->start;
if(a->fp != NULL) a->fp(a->var, new_val); /*Apply the calculated value*/
/*If the time is elapsed the animation is ready*/
if(a->act_time >= a->time) {
bool invalid;
invalid = anim_ready_handler(a);
if(invalid != false) {
a_next = ll_get_head(&anim_ll); /*a_next might be invalid if animation delete occurred*/
}
}
}
a = a_next;
}
last_task_run = systick_get();
}
/**
* Called when an animation is ready to do the necessary thinks
* e.g. repeat, play back, delete etc.
* @param a pointer to an animation descriptor
* @return true: animation delete occurred
* */
static bool anim_ready_handler(anim_t * a)
{
bool invalid = false;
/*Delete the animation if
* - no repeat and no play back (simple one shot animation)
* - no repeat, play back is enabled and play back is ready */
if((a->repeat == 0 && a->playback == 0) ||
(a->repeat == 0 && a->playback == 1 && a->playback_now == 1)) {
void (*cb) (void *) = a->end_cb;
void * p = a->var;
ll_rem(&anim_ll, a);
dm_free(a);
/*Call the callback function at the end*/
/* Check if an animation is deleted in the cb function
* if yes then the caller function has to know this*/
anim_del_global_flag = false;
if(cb != NULL) cb(p);
invalid = anim_del_global_flag;
}
/*If the animation is not deleted then restart it*/
else {
a->act_time = - a->repeat_pause; /*Restart the animation*/
/*Swap the start and end values in play back mode*/
if(a->playback != 0) {
/*If now turning back use the 'playback_pause*/
if(a->playback_now == 0) a->act_time = - a->playback_pause;
/*Toggle the play back state*/
a->playback_now = a->playback_now == 0 ? 1: 0;
/*Swap the start and end values*/
int32_t tmp;
tmp = a->start;
a->start = a->end;
a->end = tmp;
}
}
return invalid;
}

View File

@@ -1,95 +0,0 @@
/**
* @file anim.h
*
*/
#ifndef ANIM_H
#define ANIM_H
/*********************
* INCLUDES
*********************/
#include "lvgl/lvgl.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef enum
{
ANIM_PATH_LIN,
ANIM_PATH_STEP,
}anim_path_name_t;
typedef uint8_t anim_path_t;
typedef void (*anim_fp_t)(void *, int32_t);
typedef void (*anim_cb_t)(void *);
typedef struct
{
void * var; /*Variable to animate*/
anim_fp_t fp; /*Animator function*/
anim_cb_t end_cb; /*Call it when the animation is ready*/
anim_path_t * path; /*An array with the steps of animations*/
int32_t start; /*Start value*/
int32_t end; /*End value*/
int16_t time; /*Animation time in ms*/
int16_t act_time; /*Current time in animation. Set to negative to make delay.*/
uint16_t playback_pause; /*Wait before play back*/
uint16_t repeat_pause; /*Wait before repeat*/
uint8_t playback :1; /*When the animation is ready play it back*/
uint8_t repeat :1; /*Repeat the animation infinitely*/
/*Animation system use these - user shouldn't set*/
uint8_t playback_now :1; /*Play back is in progress*/
}anim_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Init. the animation module
*/
void anim_init(void);
/**
* Create an animation
* @param anim_p an initialized 'anim_t' variable. Not required after call.
*/
void anim_create(anim_t * anim_p);
/**
* Delete an animation for a variable with a given animatior function
* @param var pointer to variable
* @param fp a function pointer which is animating 'var',
* or NULL to ignore it and delete all animation with 'var
* @return true: at least 1 animation is deleted, false: no animation is deleted
*/
bool anim_del(void * var, anim_fp_t fp);
/**
* Calculate the time of an animation with a given speed and the start and end values
* @param speed speed of animation in unit/sec
* @param start start value of the animation
* @param end end value of the animation
* @return the required time [ms] for the animation with the given parameters
*/
uint16_t anim_speed_to_time(uint16_t speed, int32_t start, int32_t end);
/**
* Get a predefine animation path
* @param name name of the path from 'anim_path_name_t'
* @return pointer to the path array
*/
anim_path_t * anim_get_path(anim_path_name_t name);
/**********************
* MACROS
**********************/
#endif

View File

@@ -1,233 +0,0 @@
/**
* @file 2d.c
*
*/
/*********************
* INCLUDES
*********************/
#include <lvgl/lv_misc/area.h>
#include "misc/math/math_base.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize an area
* @param area_p pointer to an area
* @param x1 left coordinate of the area
* @param y1 top coordinate of the area
* @param x2 right coordinate of the area
* @param y2 bottom coordinate of the area
*/
void area_set(area_t * area_p, cord_t x1, cord_t y1, cord_t x2, cord_t y2)
{
area_p->x1 = x1;
area_p->y1 = y1;
area_p->x2 = x2;
area_p->y2 = y2;
}
/**
* Set the width of an area
* @param area_p pointer to an area
* @param w the new width of the area (w == 1 makes x1 == x2)
*/
void area_set_width(area_t * area_p, cord_t w)
{
area_p->x2 = area_p->x1 + w - 1;
}
/**
* Set the height of an area
* @param area_p pointer to an area
* @param h the new height of the area (h == 1 makes y1 == y2)
*/
void area_set_height(area_t * area_p, cord_t h)
{
area_p->y2 = area_p->y1 + h - 1;
}
/**
* Set the position of an area (width and height will be kept)
* @param area_p pointer to an area
* @param x the new x coordinate of the area
* @param y the new y coordinate of the area
*/
void area_set_pos(area_t * area_p, cord_t x, cord_t y)
{
cord_t w = area_get_width(area_p);
cord_t h = area_get_height(area_p);
area_p->x1 = x;
area_p->y1 = y;
area_set_width(area_p, w);
area_set_height(area_p, h);
}
/**
* Return with area of an area (x * y)
* @param area_p pointer to an area
* @return size of area
*/
uint32_t area_get_size(const area_t * area_p)
{
uint32_t size;
size = (uint32_t)(area_p->x2 - area_p->x1 + 1) *
(area_p->y2 - area_p->y1 + 1);
return size;
}
/**
* Get the common parts of two areas
* @param res_p pointer to an area, the result will be stored her
* @param a1_p pointer to the first area
* @param a2_p pointer to the second area
* @return false: the two area has NO common parts, res_p is invalid
*/
bool area_union(area_t * res_p, const area_t * a1_p, const area_t * a2_p)
{
/* Get the smaller area from 'a1_p' and 'a2_p' */
res_p->x1 = MATH_MAX(a1_p->x1, a2_p->x1);
res_p->y1 = MATH_MAX(a1_p->y1, a2_p->y1);
res_p->x2 = MATH_MIN(a1_p->x2, a2_p->x2);
res_p->y2 = MATH_MIN(a1_p->y2, a2_p->y2);
/*If x1 or y1 greater then x2 or y2 then the areas union is empty*/
bool union_ok = true;
if((res_p->x1 > res_p->x2) ||
(res_p->y1 > res_p->y2))
{
union_ok = false;
}
return union_ok;
}
/**
* Join two areas into a third which involves the other two
* @param res_p pointer to an area, the result will be stored here
* @param a1_p pointer to the first area
* @param a2_p pointer to the second area
*/
void area_join(area_t * a_res_p, const area_t * a1_p, const area_t * a2_p)
{
a_res_p->x1 = MATH_MIN(a1_p->x1, a2_p->x1);
a_res_p->y1 = MATH_MIN(a1_p->y1, a2_p->y1);
a_res_p->x2 = MATH_MAX(a1_p->x2, a2_p->x2);
a_res_p->y2 = MATH_MAX(a1_p->y2, a2_p->y2);
}
/**
* Check if a point is on an area
* @param a_p pointer to an area
* @param p_p pointer to a point
* @return false:the point is out of the area
*/
bool area_is_point_on(const area_t * a_p, const point_t * p_p)
{
bool is_on = false;
if((p_p->x >= a_p->x1 && p_p->x <= a_p->x2) &&
((p_p->y >= a_p->y1 && p_p->y <= a_p->y2)))
{
is_on = true;
}
return is_on;
}
/**
* Check if two area has common parts
* @param a1_p pointer to an area.
* @param a2_p pointer to an other area
* @return false: a1_p and a2_p has no common parts
*/
bool area_is_on(const area_t * a1_p, const area_t * a2_p)
{
/*Two area are on each other if... */
point_t p;
/*a2 left-top corner is on a1*/
p.x = a2_p->x1;
p.y = a2_p->y1;
if(area_is_point_on(a1_p, &p)) return true;
/*a2 right-top corner is on a1*/
p.x = a2_p->x1;
p.y = a2_p->y1;
if(area_is_point_on(a1_p, &p)) return true;
/*a2 left-bottom corner is on a1*/
p.x = a2_p->x1;
p.y = a2_p->y2;
if(area_is_point_on(a1_p, &p)) return true;
/*a2 right-bottom corner is on a1*/
p.x = a2_p->x2;
p.y = a2_p->y2;
if(area_is_point_on(a1_p, &p)) return true;
/*a2 is horizontally bigger then a1 and covers it*/
if((a2_p->x1 <= a1_p->x1 && a2_p->x2 >= a1_p->x2) && /*a2 hor. cover a1?*/
((a2_p->y1 <= a1_p->y1 && a2_p->y1 >= a1_p->y2) || /*upper edge is on a1?*/
(a2_p->y2 <= a1_p->y1 && a2_p->y2 >= a1_p->y2) ||/* or lower edge is on a1?*/
(a2_p->y1 <= a1_p->y1 && a2_p->y2 >= a1_p->y2))) /*or a2 vert bigger then a1*/
return true;
/*a2 is vertically bigger then a1 and covers it*/
if((a2_p->y1 <= a1_p->y1 && a2_p->y2 >= a1_p->y2) && /*a2 vert. cover a1?*/
((a2_p->x1 <= a1_p->x1 && a2_p->x1 >= a1_p->x2) || /*left edge is on a1?*/
(a2_p->x2 <= a1_p->x1 && a2_p->x2 >= a1_p->x2) ||/* or right edge is on a1?*/
(a2_p->x1 <= a1_p->x1 && a2_p->x2 >= a1_p->x2))) /*or a2 hor. bigger then a1*/
return true;
/*Else no cover*/
return false;
}
/**
* Check if an area is fully on an other
* @param ain_p pointer to an area which could be on aholder_p
* @param aholder pointer to an area which could involve ain_p
* @return
*/
bool area_is_in(const area_t * ain_p, const area_t * aholder_p)
{
bool is_in = false;
if(ain_p->x1 >= aholder_p->x1 &&
ain_p->y1 >= aholder_p->y1 &&
ain_p->x2 <= aholder_p->x2 &&
ain_p->y2 <= aholder_p->y2)
{
is_in = true;
}
return is_in;
}
/**********************
* STATIC FUNCTIONS
**********************/

View File

@@ -1,163 +0,0 @@
/**
* @file font.c
*
*/
/*********************
* INCLUDES
*********************/
#include <lvgl/lv_misc/fonts/symbol_30.h>
#include <stddef.h>
#include "font.h"
#include "fonts/dejavu_8.h"
#include "fonts/dejavu_10.h"
#include "fonts/dejavu_14.h"
#include "fonts/dejavu_20.h"
#include "fonts/dejavu_30.h"
#include "fonts/dejavu_40.h"
#include "fonts/dejavu_60.h"
#include "fonts/dejavu_80.h"
#include "fonts/symbol_30.h"
#include "fonts/symbol_60.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Get the font from its id
* @param font_id: the id of a font (an element of font_types_t enum)
* @return pointer to a font descriptor
*/
const font_t * font_get(font_types_t font_id)
{
const font_t * font_p = NULL;
switch(font_id)
{
#if USE_FONT_DEJAVU_8 != 0
case FONT_DEJAVU_8:
font_p = dejavu_8_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_10 != 0
case FONT_DEJAVU_10:
font_p = dejavu_10_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_14 != 0
case FONT_DEJAVU_14:
font_p = dejavu_14_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_20 != 0
case FONT_DEJAVU_20:
font_p = dejavu_20_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_30 != 0
case FONT_DEJAVU_30:
font_p = dejavu_30_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_40 != 0
case FONT_DEJAVU_40:
font_p = dejavu_40_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_60 != 0
case FONT_DEJAVU_60:
font_p = dejavu_60_get_dsc();
break;
#endif
#if USE_FONT_DEJAVU_80 != 0
case FONT_DEJAVU_80:
font_p = dejavu_80_get_dsc();
break;
#endif
#if USE_FONT_SYMBOL_30 != 0
case FONT_SYMBOL_30:
font_p = symbol_30_get_dsc();
break;
#endif
#if USE_FONT_SYMBOL_60 != 0
case FONT_SYMBOL_60:
font_p = symbol_60_get_dsc();
break;
#endif
default:
font_p = NULL;
}
return font_p;
}
/**
* Return with the bitmap of a font.
* @param font_p pointer to a font
* @param letter a letter
* @return pointer to the bitmap of the letter
*/
const uint8_t * font_get_bitmap(const font_t * font_p, uint8_t letter)
{
if(letter < font_p->start_ascii || letter >= font_p->start_ascii + font_p->letter_cnt) return NULL;
uint32_t index = (letter - font_p->start_ascii) * font_p->height_row * font_p->width_byte;
return &font_p->bitmaps_a[index];
}
/**
* Get the width of a letter in a font
* @param font_p pointer to a font
* @param letter a letter
* @return the width of a letter
*/
uint8_t font_get_width(const font_t * font_p, uint8_t letter)
{
if(letter < font_p->start_ascii) return 0;
letter -= font_p->start_ascii;
uint8_t w = 0;
if(letter < font_p->letter_cnt) {
w = font_p->fixed_width != 0 ? font_p->fixed_width :
font_p->width_bit_a[letter];
}
return w;
}
/**********************
* STATIC FUNCTIONS
**********************/

View File

@@ -1,115 +0,0 @@
/**
* @file font.h
*
*/
#ifndef FONT_H
#define FONT_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#include <stdint.h>
#include <stddef.h>
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef enum
{
#if USE_FONT_DEJAVU_8 != 0
FONT_DEJAVU_8,
#endif
#if USE_FONT_DEJAVU_10 != 0
FONT_DEJAVU_10,
#endif
#if USE_FONT_DEJAVU_14 != 0
FONT_DEJAVU_14,
#endif
#if USE_FONT_DEJAVU_20 != 0
FONT_DEJAVU_20,
#endif
#if USE_FONT_DEJAVU_30 != 0
FONT_DEJAVU_30,
#endif
#if USE_FONT_DEJAVU_40 != 0
FONT_DEJAVU_40,
#endif
#if USE_FONT_DEJAVU_60 != 0
FONT_DEJAVU_60,
#endif
#if USE_FONT_DEJAVU_80 != 0
FONT_DEJAVU_80,
#endif
#if USE_FONT_SYMBOL_30 != 0
FONT_SYMBOL_30,
#endif
#if USE_FONT_SYMBOL_60 != 0
FONT_SYMBOL_60,
#endif
FONT_TYPE_NUM,
}font_types_t;
typedef struct
{
uint8_t letter_cnt;
uint8_t start_ascii;
uint8_t width_byte;
uint8_t height_row;
uint8_t fixed_width;
const uint8_t * width_bit_a;
const uint8_t * bitmaps_a;
}font_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Get the font from its id
* @param font_id: the id of a font (an element of font_types_t enum)
* @return pointer to a font descriptor
*/
const font_t * font_get(font_types_t font_id);
/**
* Return with the bitmap of a font.
* @param font_p pointer to a font
* @param letter a letter
* @return pointer to the bitmap of the letter
*/
const uint8_t * font_get_bitmap(const font_t * font_p, uint8_t letter);
/**
* Get the height of a font
* @param font_p pointer to a font
* @return the height of a font
*/
static inline uint8_t font_get_height(const font_t * font_p)
{
return font_p->height_row;
}
/**
* Get the width of a letter in a font
* @param font_p pointer to a font
* @param letter a letter
* @return the width of a letter
*/
uint8_t font_get_width(const font_t * font_p, uint8_t letter);
/**********************
* MACROS
**********************/
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_10_H
#define DEJAVU_10_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_10 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_10_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_14_H
#define DEJAVU_14_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_14 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_14_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_20_H
#define DEJAVU_20_H
/*Use ISO8859-1 encoding in the IDE*/
#include "misc_conf.h"
#if USE_FONT_DEJAVU_20 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_20_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_30_H
#define DEJAVU_30_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_30 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_30_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_40_H
#define DEJAVU_40_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_40 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_40_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_60_H
#define DEJAVU_60_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_60 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_60_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
#ifndef DEJAVU_8_H
#define DEJAVU_8_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_8 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_8_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +0,0 @@
#ifndef DEJAVU_80_H
#define DEJAVU_80_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_DEJAVU_80 != 0
#include <stdint.h>
#include "../font.h"
const font_t * dejavu_80_get_dsc(void);
#endif
#endif

View File

@@ -1,867 +0,0 @@
#include "lv_conf.h"
#if USE_FONT_SYMBOL_30 != 0
#include <stdint.h>
#include "../font.h"
static const uint8_t symbol_30_bitmaps[3120] =
{
// ASCII: 97, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x03, 0xff, 0xff, 0x00, // ------OOOOOOOOOOOOOOOOOO------..
0x07, 0xff, 0xff, 0x80, // -----OOOOOOOOOOOOOOOOOOOO-----..
0x07, 0xff, 0xff, 0x80, // -----OOOOOOOOOOOOOOOOOOOO-----..
0x07, 0xff, 0xff, 0x80, // -----OOOOOOOOOOOOOOOOOOOO-----..
0x0f, 0xff, 0xff, 0xc0, // ----OOOOOOOOOOOOOOOOOOOOOO----..
0x0f, 0xff, 0xff, 0xc0, // ----OOOOOOOOOOOOOOOOOOOOOO----..
0x0f, 0xff, 0xff, 0xc0, // ----OOOOOOOOOOOOOOOOOOOOOO----..
0x1f, 0xff, 0xff, 0xe0, // ---OOOOOOOOOOOOOOOOOOOOOOOO---..
0x1f, 0xff, 0xff, 0xe0, // ---OOOOOOOOOOOOOOOOOOOOOOOO---..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x7f, 0xff, 0xff, 0xf8, // -OOOOOOOOOOOOOOOOOOOOOOOOOOOO-..
0x7f, 0xff, 0xff, 0xf8, // -OOOOOOOOOOOOOOOOOOOOOOOOOOOO-..
0x7f, 0xff, 0xff, 0xf8, // -OOOOOOOOOOOOOOOOOOOOOOOOOOOO-..
0xff, 0xff, 0xff, 0xfc, // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..
0xff, 0xff, 0xff, 0xfc, // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..
0xff, 0xff, 0xff, 0xfc, // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..
0xe0, 0x00, 0x00, 0x1c, // OOO------------------------OOO..
0x60, 0x00, 0x00, 0x18, // -OO------------------------OO-..
0x60, 0x00, 0x03, 0x18, // -OO-------------------OO---OO-..
0x60, 0x00, 0x03, 0x18, // -OO-------------------OO---OO-..
0x70, 0x00, 0x00, 0x38, // -OOO----------------------OOO-..
0x30, 0x00, 0x00, 0x30, // --OO----------------------OO--..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 98, char width: 26
0xff, 0xfe, 0x40, 0x00, // OOOOOOOOOOOOOOO--O--------......
0xff, 0xfe, 0x60, 0x00, // OOOOOOOOOOOOOOO--OO-------......
0xff, 0xfe, 0x70, 0x00, // OOOOOOOOOOOOOOO--OOO------......
0xff, 0xfe, 0x78, 0x00, // OOOOOOOOOOOOOOO--OOOO-----......
0xff, 0xfe, 0x7c, 0x00, // OOOOOOOOOOOOOOO--OOOOO----......
0xff, 0xfe, 0x7e, 0x00, // OOOOOOOOOOOOOOO--OOOOOO---......
0xff, 0xfe, 0x7f, 0x00, // OOOOOOOOOOOOOOO--OOOOOOO--......
0xff, 0xfe, 0x7f, 0x80, // OOOOOOOOOOOOOOO--OOOOOOOO-......
0xff, 0xfe, 0x00, 0x00, // OOOOOOOOOOOOOOO-----------......
0xff, 0xff, 0x00, 0x00, // OOOOOOOOOOOOOOOO----------......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xfe, 0x00, 0x1f, 0xc0, // OOOOOOO------------OOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0x80, // OOOOOOOOOOOOOOOOOOOOOOOOO-......
// ASCII: 99, char width: 32
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x3f, 0xe0, 0x00, 0x00, // --OOOOOOOOO---------------------
0x7f, 0xf0, 0x00, 0x00, // -OOOOOOOOOOO--------------------
0xff, 0xf8, 0x00, 0x00, // OOOOOOOOOOOOO-------------------
0xff, 0xf8, 0x00, 0x00, // OOOOOOOOOOOOO-------------------
0xff, 0xff, 0xff, 0x00, // OOOOOOOOOOOOOOOOOOOOOOOO--------
0xff, 0xff, 0xff, 0x80, // OOOOOOOOOOOOOOOOOOOOOOOOO-------
0xff, 0xff, 0xff, 0x80, // OOOOOOOOOOOOOOOOOOOOOOOOO-------
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO------
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO------
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO------
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO------
0xff, 0x80, 0x00, 0x00, // OOOOOOOOO-----------------------
0xfe, 0x00, 0x00, 0x00, // OOOOOOO-------------------------
0xfc, 0x3f, 0xff, 0xff, // OOOOOO----OOOOOOOOOOOOOOOOOOOOOO
0xf8, 0xff, 0xff, 0xfe, // OOOOO---OOOOOOOOOOOOOOOOOOOOOOO-
0xf1, 0xff, 0xff, 0xfe, // OOOO---OOOOOOOOOOOOOOOOOOOOOOOO-
0xf3, 0xff, 0xff, 0xfc, // OOOO--OOOOOOOOOOOOOOOOOOOOOOOO--
0xe7, 0xff, 0xff, 0xf8, // OOO--OOOOOOOOOOOOOOOOOOOOOOOO---
0xcf, 0xff, 0xff, 0xf0, // OO--OOOOOOOOOOOOOOOOOOOOOOOO----
0x8f, 0xff, 0xff, 0xe0, // O---OOOOOOOOOOOOOOOOOOOOOOO-----
0x1f, 0xff, 0xff, 0xe0, // ---OOOOOOOOOOOOOOOOOOOOOOOO-----
0x3f, 0xff, 0xff, 0xc0, // --OOOOOOOOOOOOOOOOOOOOOOOO------
0x7f, 0xff, 0xff, 0x80, // -OOOOOOOOOOOOOOOOOOOOOOOO-------
0x7f, 0xff, 0xfe, 0x00, // -OOOOOOOOOOOOOOOOOOOOOO---------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
// ASCII: 100, char width: 24
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0xff, 0x00, 0x00, // --------OOOOOOOO--------........
0x01, 0xff, 0x80, 0x00, // -------OOOOOOOOOO-------........
0x03, 0x81, 0x80, 0x00, // ------OOO------OO-------........
0x03, 0x01, 0xc0, 0x00, // ------OO-------OOO------........
0xff, 0xff, 0xff, 0x00, // OOOOOOOOOOOOOOOOOOOOOOOO........
0xff, 0xff, 0xff, 0x00, // OOOOOOOOOOOOOOOOOOOOOOOO........
0x30, 0x00, 0x1c, 0x00, // --OO---------------OOO--........
0x30, 0x00, 0x1c, 0x00, // --OO---------------OOO--........
0x30, 0x00, 0x1c, 0x00, // --OO---------------OOO--........
0x30, 0x00, 0x1c, 0x00, // --OO---------------OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x33, 0x99, 0x9c, 0x00, // --OO--OOO--OO--OO--OOO--........
0x30, 0x00, 0x1c, 0x00, // --OO---------------OOO--........
0x30, 0x00, 0x1c, 0x00, // --OO---------------OOO--........
0x38, 0x00, 0x18, 0x00, // --OOO--------------OO---........
0x1f, 0xff, 0xf8, 0x00, // ---OOOOOOOOOOOOOOOOOO---........
0x1f, 0xff, 0xf0, 0x00, // ---OOOOOOOOOOOOOOOOO----........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
// ASCII: 101, char width: 26
0x00, 0x00, 0x00, 0x00, // --------------------------......
0xff, 0xff, 0xe0, 0x00, // OOOOOOOOOOOOOOOOOOO-------......
0xff, 0xff, 0xf0, 0x00, // OOOOOOOOOOOOOOOOOOOO------......
0xcf, 0xe1, 0xb8, 0x00, // OO--OOOOOOO----OO-OOO-----......
0xcf, 0xe1, 0x9c, 0x00, // OO--OOOOOOO----OO--OOO----......
0xcf, 0xe1, 0x8e, 0x00, // OO--OOOOOOO----OO---OOO---......
0xcf, 0xe1, 0x87, 0x00, // OO--OOOOOOO----OO----OOO--......
0xcf, 0xe1, 0x83, 0x80, // OO--OOOOOOO----OO-----OOO-......
0xcf, 0xe1, 0x81, 0xc0, // OO--OOOOOOO----OO------OOO......
0xcf, 0xe1, 0x81, 0xc0, // OO--OOOOOOO----OO------OOO......
0xcf, 0xff, 0x81, 0xc0, // OO--OOOOOOOOOOOOO------OOO......
0xc7, 0xff, 0x81, 0xc0, // OO---OOOOOOOOOOOO------OOO......
0xc0, 0x00, 0x01, 0xc0, // OO---------------------OOO......
0xc0, 0x00, 0x01, 0xc0, // OO---------------------OOO......
0xc0, 0x00, 0x01, 0xc0, // OO---------------------OOO......
0xc0, 0x00, 0x01, 0xc0, // OO---------------------OOO......
0xc7, 0xff, 0xf9, 0xc0, // OO---OOOOOOOOOOOOOOOO--OOO......
0xcf, 0xff, 0xfd, 0xc0, // OO--OOOOOOOOOOOOOOOOOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xce, 0x00, 0x1d, 0xc0, // OO--OOO------------OOO-OOO......
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO......
0xff, 0xff, 0xff, 0x80, // OOOOOOOOOOOOOOOOOOOOOOOOO-......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
// ASCII: 102, char width: 26
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x38, 0x00, // ------------------OOO-----......
0x00, 0x00, 0x7c, 0x00, // -----------------OOOOO----......
0x00, 0x00, 0xfe, 0x00, // ----------------OOOOOOO---......
0x00, 0x01, 0xff, 0x00, // ---------------OOOOOOOOO--......
0x00, 0x00, 0xff, 0x80, // ----------------OOOOOOOOO-......
0x00, 0x06, 0x7f, 0x80, // -------------OO--OOOOOOOO-......
0x00, 0x0f, 0x3f, 0x80, // ------------OOOO--OOOOOOO-......
0x00, 0x1f, 0x9f, 0x80, // -----------OOOOOO--OOOOOO-......
0x00, 0x3f, 0xcf, 0x00, // ----------OOOOOOOO--OOOO--......
0x00, 0x7b, 0xe6, 0x00, // ---------OOOO-OOOOO--OO---......
0x00, 0xf7, 0xf0, 0x00, // --------OOOO-OOOOOOO------......
0x01, 0xef, 0xf8, 0x00, // -------OOOO-OOOOOOOOO-----......
0x03, 0xdf, 0xf0, 0x00, // ------OOOO-OOOOOOOOO------......
0x07, 0xbf, 0xe0, 0x00, // -----OOOO-OOOOOOOOO-------......
0x0f, 0x7f, 0xc0, 0x00, // ----OOOO-OOOOOOOOO--------......
0x1e, 0xff, 0x80, 0x00, // ---OOOO-OOOOOOOOO---------......
0x3d, 0xff, 0x00, 0x00, // --OOOO-OOOOOOOOO----------......
0x7b, 0xfe, 0x00, 0x00, // -OOOO-OOOOOOOOO-----------......
0xff, 0xfc, 0x00, 0x00, // OOOOOOOOOOOOOO------------......
0xe7, 0xf8, 0x00, 0x00, // OOO--OOOOOOOO-------------......
0xc3, 0xf0, 0x00, 0x00, // OO----OOOOOO--------------......
0xc1, 0xe0, 0x00, 0x00, // OO-----OOOO---------------......
0xf1, 0xc0, 0x00, 0x00, // OOOO---OOO----------------......
0xf1, 0xc0, 0x00, 0x00, // OOOO---OOO----------------......
0xff, 0x80, 0x00, 0x00, // OOOOOOOOO-----------------......
0xff, 0x00, 0x00, 0x00, // OOOOOOOO------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
// ASCII: 103, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x03, 0xc0, // ----------------------OOOO----..
0x00, 0x00, 0x07, 0xe0, // ---------------------OOOOOO---..
0x00, 0x00, 0x0f, 0xf0, // --------------------OOOOOOOO--..
0x00, 0x00, 0x0f, 0xf0, // --------------------OOOOOOOO--..
0x00, 0x00, 0x1f, 0xf0, // -------------------OOOOOOOOO--..
0x00, 0x00, 0x3f, 0xe0, // ------------------OOOOOOOOO---..
0x06, 0x00, 0x7f, 0xc0, // -----OO----------OOOOOOOOO----..
0x0f, 0x00, 0xff, 0x80, // ----OOOO--------OOOOOOOOO-----..
0x1f, 0x81, 0xff, 0x00, // ---OOOOOO------OOOOOOOOO------..
0x3f, 0xc3, 0xfe, 0x00, // --OOOOOOOO----OOOOOOOOO-------..
0x3f, 0xe7, 0xfc, 0x00, // --OOOOOOOOO--OOOOOOOOO--------..
0x1f, 0xff, 0xf8, 0x00, // ---OOOOOOOOOOOOOOOOOO---------..
0x0f, 0xff, 0xf0, 0x00, // ----OOOOOOOOOOOOOOOO----------..
0x07, 0xff, 0xe0, 0x00, // -----OOOOOOOOOOOOOO-----------..
0x03, 0xff, 0xc0, 0x00, // ------OOOOOOOOOOOO------------..
0x01, 0xff, 0x80, 0x00, // -------OOOOOOOOOO-------------..
0x00, 0xff, 0x00, 0x00, // --------OOOOOOOO--------------..
0x00, 0x7e, 0x00, 0x00, // ---------OOOOOO---------------..
0x00, 0x3c, 0x00, 0x00, // ----------OOOO----------------..
0x00, 0x18, 0x00, 0x00, // -----------OO-----------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 104, char width: 24
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x0e, 0x00, 0x60, 0x00, // ----OOO----------OO-----........
0x0f, 0x00, 0xf0, 0x00, // ----OOOO--------OOOO----........
0x1f, 0x81, 0xf8, 0x00, // ---OOOOOO------OOOOOO---........
0x3f, 0xc3, 0xfc, 0x00, // --OOOOOOOO----OOOOOOOO--........
0x3f, 0xe7, 0xfc, 0x00, // --OOOOOOOOO--OOOOOOOOO--........
0x1f, 0xff, 0xf8, 0x00, // ---OOOOOOOOOOOOOOOOOO---........
0x0f, 0xff, 0xf0, 0x00, // ----OOOOOOOOOOOOOOOO----........
0x07, 0xff, 0xe0, 0x00, // -----OOOOOOOOOOOOOO-----........
0x03, 0xff, 0xc0, 0x00, // ------OOOOOOOOOOOO------........
0x01, 0xff, 0x80, 0x00, // -------OOOOOOOOOO-------........
0x01, 0xff, 0x80, 0x00, // -------OOOOOOOOOO-------........
0x03, 0xff, 0xc0, 0x00, // ------OOOOOOOOOOOO------........
0x07, 0xff, 0xe0, 0x00, // -----OOOOOOOOOOOOOO-----........
0x0f, 0xff, 0xf0, 0x00, // ----OOOOOOOOOOOOOOOO----........
0x1f, 0xff, 0xf8, 0x00, // ---OOOOOOOOOOOOOOOOOO---........
0x3f, 0xe7, 0xfc, 0x00, // --OOOOOOOOO--OOOOOOOOO--........
0x3f, 0xc3, 0xfc, 0x00, // --OOOOOOOO----OOOOOOOO--........
0x3f, 0x81, 0xf8, 0x00, // --OOOOOOO------OOOOOO---........
0x1f, 0x00, 0xf0, 0x00, // ---OOOOO--------OOOO----........
0x0e, 0x00, 0x60, 0x00, // ----OOO----------OO-----........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
// ASCII: 105, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x0c, 0x00, 0x00, 0xc0, // ----OO------------------OO----..
0x1e, 0x00, 0x01, 0xe0, // ---OOOO----------------OOOO---..
0x3f, 0x00, 0x03, 0xf0, // --OOOOOO--------------OOOOOO--..
0x3f, 0x80, 0x07, 0xf8, // --OOOOOOO------------OOOOOOOO-..
0x7f, 0xc0, 0x0f, 0xf0, // -OOOOOOOOO----------OOOOOOOO--..
0x3f, 0xe0, 0x1f, 0xf0, // --OOOOOOOOO--------OOOOOOOOO--..
0x1f, 0xf0, 0x3f, 0xe0, // ---OOOOOOOOO------OOOOOOOOO---..
0x0f, 0xf8, 0x7f, 0xc0, // ----OOOOOOOOO----OOOOOOOOO----..
0x07, 0xfc, 0xff, 0x80, // -----OOOOOOOOO--OOOOOOOOO-----..
0x03, 0xff, 0xff, 0x00, // ------OOOOOOOOOOOOOOOOOO------..
0x01, 0xff, 0xfe, 0x00, // -------OOOOOOOOOOOOOOOO-------..
0x00, 0xff, 0xfc, 0x00, // --------OOOOOOOOOOOOOO--------..
0x00, 0x7f, 0xf8, 0x00, // ---------OOOOOOOOOOOO---------..
0x00, 0x3f, 0xf0, 0x00, // ----------OOOOOOOOOO----------..
0x00, 0x1f, 0xe0, 0x00, // -----------OOOOOOOO-----------..
0x00, 0x0f, 0xc0, 0x00, // ------------OOOOOO------------..
0x00, 0x07, 0x80, 0x00, // -------------OOOO-------------..
0x00, 0x03, 0x00, 0x00, // --------------OO--------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 106, char width: 21
0x00, 0x03, 0xc0, 0x00, // --------------OOOO---...........
0x00, 0x07, 0xe0, 0x00, // -------------OOOOOO--...........
0x00, 0x0f, 0xf0, 0x00, // ------------OOOOOOOO-...........
0x00, 0x1f, 0xf0, 0x00, // -----------OOOOOOOOO-...........
0x00, 0x3f, 0xe0, 0x00, // ----------OOOOOOOOO--...........
0x00, 0x7f, 0xc0, 0x00, // ---------OOOOOOOOO---...........
0x00, 0xff, 0x80, 0x00, // --------OOOOOOOOO----...........
0x01, 0xff, 0x00, 0x00, // -------OOOOOOOOO-----...........
0x03, 0xfe, 0x00, 0x00, // ------OOOOOOOOO------...........
0x07, 0xfc, 0x00, 0x00, // -----OOOOOOOOO-------...........
0x0f, 0xf8, 0x00, 0x00, // ----OOOOOOOOO--------...........
0x0f, 0xf0, 0x00, 0x00, // ----OOOOOOOO---------...........
0x1f, 0xe0, 0x00, 0x00, // ---OOOOOOOO----------...........
0x3f, 0xe0, 0x00, 0x00, // --OOOOOOOOO----------...........
0x0f, 0xf0, 0x00, 0x00, // ----OOOOOOOO---------...........
0x0f, 0xf8, 0x00, 0x00, // ----OOOOOOOOO--------...........
0x07, 0xfc, 0x00, 0x00, // -----OOOOOOOOO-------...........
0x03, 0xfe, 0x00, 0x00, // ------OOOOOOOOO------...........
0x01, 0xff, 0x00, 0x00, // -------OOOOOOOOO-----...........
0x00, 0xff, 0x80, 0x00, // --------OOOOOOOOO----...........
0x00, 0x7f, 0xc0, 0x00, // ---------OOOOOOOOO---...........
0x00, 0x3f, 0xe0, 0x00, // ----------OOOOOOOOO--...........
0x00, 0x1f, 0xf0, 0x00, // -----------OOOOOOOOO-...........
0x00, 0x0f, 0xf0, 0x00, // ------------OOOOOOOO-...........
0x00, 0x07, 0xe0, 0x00, // -------------OOOOOO--...........
0x00, 0x03, 0xc0, 0x00, // --------------OOOO---...........
0x00, 0x01, 0x80, 0x00, // ---------------OO----...........
0x00, 0x00, 0x00, 0x00, // ---------------------...........
0x00, 0x00, 0x00, 0x00, // ---------------------...........
0x00, 0x00, 0x00, 0x00, // ---------------------...........
// ASCII: 107, char width: 21
0x1e, 0x00, 0x00, 0x00, // ---OOOO--------------...........
0x3f, 0x00, 0x00, 0x00, // --OOOOOO-------------...........
0x3f, 0x80, 0x00, 0x00, // --OOOOOOO------------...........
0x7f, 0xc0, 0x00, 0x00, // -OOOOOOOOO-----------...........
0x3f, 0xe0, 0x00, 0x00, // --OOOOOOOOO----------...........
0x1f, 0xf0, 0x00, 0x00, // ---OOOOOOOOO---------...........
0x0f, 0xf8, 0x00, 0x00, // ----OOOOOOOOO--------...........
0x07, 0xfc, 0x00, 0x00, // -----OOOOOOOOO-------...........
0x03, 0xfe, 0x00, 0x00, // ------OOOOOOOOO------...........
0x01, 0xff, 0x00, 0x00, // -------OOOOOOOOO-----...........
0x00, 0xff, 0x80, 0x00, // --------OOOOOOOOO----...........
0x00, 0x7f, 0xc0, 0x00, // ---------OOOOOOOOO---...........
0x00, 0x3f, 0xe0, 0x00, // ----------OOOOOOOOO--...........
0x00, 0x3f, 0xe0, 0x00, // ----------OOOOOOOOO--...........
0x00, 0x7f, 0xc0, 0x00, // ---------OOOOOOOOO---...........
0x00, 0xff, 0x80, 0x00, // --------OOOOOOOOO----...........
0x01, 0xff, 0x00, 0x00, // -------OOOOOOOOO-----...........
0x03, 0xfe, 0x00, 0x00, // ------OOOOOOOOO------...........
0x07, 0xfc, 0x00, 0x00, // -----OOOOOOOOO-------...........
0x0f, 0xf8, 0x00, 0x00, // ----OOOOOOOOO--------...........
0x1f, 0xf0, 0x00, 0x00, // ---OOOOOOOOO---------...........
0x1f, 0xe0, 0x00, 0x00, // ---OOOOOOOO----------...........
0x3f, 0xc0, 0x00, 0x00, // --OOOOOOOO-----------...........
0x7f, 0x80, 0x00, 0x00, // -OOOOOOOO------------...........
0x3f, 0x00, 0x00, 0x00, // --OOOOOO-------------...........
0x1e, 0x00, 0x00, 0x00, // ---OOOO--------------...........
0x0c, 0x00, 0x00, 0x00, // ----OO---------------...........
0x00, 0x00, 0x00, 0x00, // ---------------------...........
0x00, 0x00, 0x00, 0x00, // ---------------------...........
0x00, 0x00, 0x00, 0x00, // ---------------------...........
// ASCII: 108, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x03, 0x00, 0x00, // --------------OO--------------..
0x00, 0x07, 0x80, 0x00, // -------------OOOO-------------..
0x00, 0x0f, 0xc0, 0x00, // ------------OOOOOO------------..
0x00, 0x1f, 0xe0, 0x00, // -----------OOOOOOOO-----------..
0x00, 0x3f, 0xf0, 0x00, // ----------OOOOOOOOOO----------..
0x00, 0x7f, 0xf8, 0x00, // ---------OOOOOOOOOOOO---------..
0x00, 0xff, 0xfc, 0x00, // --------OOOOOOOOOOOOOO--------..
0x01, 0xff, 0xfe, 0x00, // -------OOOOOOOOOOOOOOOO-------..
0x03, 0xff, 0xff, 0x00, // ------OOOOOOOOOOOOOOOOOO------..
0x07, 0xfc, 0xff, 0x80, // -----OOOOOOOOO--OOOOOOOOO-----..
0x0f, 0xf8, 0x7f, 0xc0, // ----OOOOOOOOO----OOOOOOOOO----..
0x1f, 0xf0, 0x3f, 0xe0, // ---OOOOOOOOO------OOOOOOOOO---..
0x3f, 0xe0, 0x1f, 0xf0, // --OOOOOOOOO--------OOOOOOOOO--..
0x3f, 0xc0, 0x0f, 0xf0, // --OOOOOOOO----------OOOOOOOO--..
0x7f, 0x80, 0x07, 0xf8, // -OOOOOOOO------------OOOOOOOO-..
0x3f, 0x00, 0x03, 0xf0, // --OOOOOO--------------OOOOOO--..
0x1e, 0x00, 0x01, 0xe0, // ---OOOO----------------OOOO---..
0x0c, 0x00, 0x00, 0xc0, // ----OO------------------OO----..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 109, char width: 17
0x01, 0x80, 0x00, 0x00, // -------OO--------...............
0x01, 0xc0, 0x00, 0x00, // -------OOO-------...............
0x01, 0xe0, 0x00, 0x00, // -------OOOO------...............
0x01, 0xf0, 0x00, 0x00, // -------OOOOO-----...............
0x01, 0xf8, 0x00, 0x00, // -------OOOOOO----...............
0x01, 0xfc, 0x00, 0x00, // -------OOOOOOO---...............
0x21, 0xde, 0x00, 0x00, // --O----OOO-OOOO--...............
0x71, 0xcf, 0x00, 0x00, // -OOO---OOO--OOOO-...............
0x79, 0xcf, 0x80, 0x00, // -OOOO--OOO--OOOOO...............
0x3d, 0xde, 0x00, 0x00, // --OOOO-OOO-OOOO--...............
0x1f, 0xfc, 0x00, 0x00, // ---OOOOOOOOOOO---...............
0x0f, 0xf8, 0x00, 0x00, // ----OOOOOOOOO----...............
0x07, 0xf0, 0x00, 0x00, // -----OOOOOOO-----...............
0x03, 0xe0, 0x00, 0x00, // ------OOOOO------...............
0x01, 0xe0, 0x00, 0x00, // -------OOOO------...............
0x03, 0xf0, 0x00, 0x00, // ------OOOOOO-----...............
0x07, 0xf8, 0x00, 0x00, // -----OOOOOOOO----...............
0x0f, 0xfc, 0x00, 0x00, // ----OOOOOOOOOO---...............
0x1d, 0xde, 0x00, 0x00, // ---OOO-OOO-OOOO--...............
0x39, 0xcf, 0x00, 0x00, // --OOO--OOO--OOOO-...............
0x71, 0xc7, 0x80, 0x00, // -OOO---OOO---OOOO...............
0x71, 0xce, 0x00, 0x00, // -OOO---OOO--OOO--...............
0x01, 0xfc, 0x00, 0x00, // -------OOOOOOO---...............
0x01, 0xf8, 0x00, 0x00, // -------OOOOOO----...............
0x01, 0xf8, 0x00, 0x00, // -------OOOOOO----...............
0x01, 0xf0, 0x00, 0x00, // -------OOOOO-----...............
0x01, 0xe0, 0x00, 0x00, // -------OOOO------...............
0x01, 0xc0, 0x00, 0x00, // -------OOO-------...............
0x01, 0x80, 0x00, 0x00, // -------OO--------...............
0x00, 0x00, 0x00, 0x00, // -----------------...............
// ASCII: 110, char width: 17
0x0f, 0xe0, 0x00, 0x00, // ----OOOOOOO------...............
0x1c, 0x70, 0x00, 0x00, // ---OOO---OOO-----...............
0x38, 0x38, 0x00, 0x00, // --OOO-----OOO----...............
0x38, 0x18, 0x00, 0x00, // --OOO------OO----...............
0x30, 0x1b, 0x80, 0x00, // --OO-------OO-OOO...............
0x30, 0x1b, 0x80, 0x00, // --OO-------OO-OOO...............
0x30, 0x18, 0x00, 0x00, // --OO-------OO----...............
0x30, 0x18, 0x00, 0x00, // --OO-------OO----...............
0x33, 0x9b, 0x80, 0x00, // --OO--OOO--OO-OOO...............
0x33, 0x9b, 0x80, 0x00, // --OO--OOO--OO-OOO...............
0x33, 0x98, 0x00, 0x00, // --OO--OOO--OO----...............
0x33, 0x98, 0x00, 0x00, // --OO--OOO--OO----...............
0x33, 0x98, 0x00, 0x00, // --OO--OOO--OO----...............
0x33, 0x9b, 0x80, 0x00, // --OO--OOO--OO-OOO...............
0x33, 0x9b, 0x80, 0x00, // --OO--OOO--OO-OOO...............
0x33, 0x98, 0x00, 0x00, // --OO--OOO--OO----...............
0x33, 0x98, 0x00, 0x00, // --OO--OOO--OO----...............
0x33, 0x98, 0x00, 0x00, // --OO--OOO--OO----...............
0x73, 0x9c, 0x00, 0x00, // -OOO--OOO--OOO---...............
0x63, 0x8c, 0x00, 0x00, // -OO---OOO---OO---...............
0xe7, 0xce, 0x00, 0x00, // OOO--OOOOO--OOO--...............
0xcf, 0xe6, 0x00, 0x00, // OO--OOOOOOO--OO--...............
0xcf, 0xe6, 0x00, 0x00, // OO--OOOOOOO--OO--...............
0xcf, 0xe6, 0x00, 0x00, // OO--OOOOOOO--OO--...............
0xe7, 0xce, 0x00, 0x00, // OOO--OOOOO--OOO--...............
0xe3, 0x8c, 0x00, 0x00, // OOO---OOO---OO---...............
0x70, 0x1c, 0x00, 0x00, // -OOO-------OOO---...............
0x38, 0x38, 0x00, 0x00, // --OOO-----OOO----...............
0x1f, 0xf0, 0x00, 0x00, // ---OOOOOOOOO-----...............
0x07, 0xc0, 0x00, 0x00, // -----OOOOO-------...............
// ASCII: 111, char width: 24
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x06, 0x00, // ---------------------OO-........
0x00, 0x00, 0x1f, 0x00, // -------------------OOOOO........
0x00, 0x00, 0x7e, 0x00, // -----------------OOOOOO-........
0x00, 0x01, 0xfe, 0x00, // ---------------OOOOOOOO-........
0x00, 0x07, 0xfc, 0x00, // -------------OOOOOOOOO--........
0x00, 0x1f, 0xfc, 0x00, // -----------OOOOOOOOOOO--........
0x00, 0x7f, 0xf8, 0x00, // ---------OOOOOOOOOOOO---........
0x01, 0xff, 0xf8, 0x00, // -------OOOOOOOOOOOOOO---........
0x07, 0xff, 0xf0, 0x00, // -----OOOOOOOOOOOOOOO----........
0x1f, 0xff, 0xf0, 0x00, // ---OOOOOOOOOOOOOOOOO----........
0x7f, 0xff, 0xe0, 0x00, // -OOOOOOOOOOOOOOOOOO-----........
0xff, 0xff, 0xe0, 0x00, // OOOOOOOOOOOOOOOOOOO-----........
0xff, 0xff, 0xc0, 0x00, // OOOOOOOOOOOOOOOOOO------........
0x00, 0x1f, 0xc0, 0x00, // -----------OOOOOOO------........
0x00, 0x1f, 0x80, 0x00, // -----------OOOOOO-------........
0x00, 0x1f, 0x80, 0x00, // -----------OOOOOO-------........
0x00, 0x1f, 0x00, 0x00, // -----------OOOOO--------........
0x00, 0x1f, 0x00, 0x00, // -----------OOOOO--------........
0x00, 0x1e, 0x00, 0x00, // -----------OOOO---------........
0x00, 0x1e, 0x00, 0x00, // -----------OOOO---------........
0x00, 0x1c, 0x00, 0x00, // -----------OOO----------........
0x00, 0x1c, 0x00, 0x00, // -----------OOO----------........
0x00, 0x18, 0x00, 0x00, // -----------OO-----------........
0x00, 0x18, 0x00, 0x00, // -----------OO-----------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
// ASCII: 112, char width: 30
0x00, 0x07, 0x80, 0x00, // -------------OOOO-------------..
0x00, 0x0f, 0xc0, 0x00, // ------------OOOOOO------------..
0x00, 0x0f, 0xc0, 0x00, // ------------OOOOOO------------..
0x00, 0x1f, 0xe0, 0x00, // -----------OOOOOOOO-----------..
0x00, 0x1f, 0xe0, 0x00, // -----------OOOOOOOO-----------..
0x00, 0x3f, 0xf0, 0x00, // ----------OOOOOOOOOO----------..
0x00, 0x3f, 0xf0, 0x00, // ----------OOOOOOOOOO----------..
0x00, 0x7f, 0xf8, 0x00, // ---------OOOOOOOOOOOO---------..
0x00, 0xf8, 0x7c, 0x00, // --------OOOOO----OOOOO--------..
0x00, 0xf8, 0x7c, 0x00, // --------OOOOO----OOOOO--------..
0x01, 0xf8, 0x7e, 0x00, // -------OOOOOO----OOOOOO-------..
0x01, 0xf8, 0x7e, 0x00, // -------OOOOOO----OOOOOO-------..
0x03, 0xf8, 0x7f, 0x00, // ------OOOOOOO----OOOOOOO------..
0x03, 0xf8, 0x7f, 0x00, // ------OOOOOOO----OOOOOOO------..
0x07, 0xf8, 0x7f, 0x80, // -----OOOOOOOO----OOOOOOOO-----..
0x07, 0xf8, 0x7f, 0x80, // -----OOOOOOOO----OOOOOOOO-----..
0x0f, 0xff, 0xff, 0xc0, // ----OOOOOOOOOOOOOOOOOOOOOO----..
0x0f, 0xff, 0xff, 0xc0, // ----OOOOOOOOOOOOOOOOOOOOOO----..
0x1f, 0xf8, 0x7f, 0xe0, // ---OOOOOOOOOO----OOOOOOOOOO---..
0x1f, 0xf8, 0x7f, 0xe0, // ---OOOOOOOOOO----OOOOOOOOOO---..
0x3f, 0xf8, 0x7f, 0xf0, // --OOOOOOOOOOO----OOOOOOOOOOO--..
0x7f, 0xf8, 0x7f, 0xf8, // -OOOOOOOOOOOO----OOOOOOOOOOOO-..
0x7f, 0xf8, 0x7f, 0xf8, // -OOOOOOOOOOOO----OOOOOOOOOOOO-..
0xff, 0xff, 0xff, 0xfc, // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..
0xff, 0xff, 0xff, 0xfc, // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..
0xff, 0xff, 0xff, 0xfc, // OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..
0x7f, 0xff, 0xff, 0xf8, // -OOOOOOOOOOOOOOOOOOOOOOOOOOOO-..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 113, char width: 24
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x7f, 0x00, 0x00, // ---------OOOOOOO--------........
0x03, 0xff, 0xc0, 0x00, // ------OOOOOOOOOOOO------........
0x07, 0xff, 0xf0, 0x00, // -----OOOOOOOOOOOOOOO----........
0x0f, 0xff, 0xf8, 0x00, // ----OOOOOOOOOOOOOOOOO---........
0x1f, 0xe3, 0xfc, 0x00, // ---OOOOOOOO---OOOOOOOO--........
0x3f, 0xc3, 0xfc, 0x00, // --OOOOOOOO----OOOOOOOO--........
0x7f, 0xc3, 0xfe, 0x00, // -OOOOOOOOO----OOOOOOOOO-........
0x7f, 0xe3, 0xfe, 0x00, // -OOOOOOOOOO---OOOOOOOOO-........
0x7f, 0xff, 0xff, 0x00, // -OOOOOOOOOOOOOOOOOOOOOOO........
0xff, 0xff, 0xff, 0x00, // OOOOOOOOOOOOOOOOOOOOOOOO........
0xff, 0xe3, 0xff, 0x00, // OOOOOOOOOOO---OOOOOOOOOO........
0xff, 0xe3, 0xff, 0x00, // OOOOOOOOOOO---OOOOOOOOOO........
0xff, 0xe3, 0xff, 0x00, // OOOOOOOOOOO---OOOOOOOOOO........
0xff, 0xe3, 0xff, 0x00, // OOOOOOOOOOO---OOOOOOOOOO........
0xff, 0xe3, 0xff, 0x00, // OOOOOOOOOOO---OOOOOOOOOO........
0xff, 0xe3, 0xff, 0x00, // OOOOOOOOOOO---OOOOOOOOOO........
0x7f, 0xe3, 0xff, 0x00, // -OOOOOOOOOO---OOOOOOOOOO........
0x7f, 0xe3, 0xfe, 0x00, // -OOOOOOOOOO---OOOOOOOOO-........
0x7f, 0xe3, 0xfe, 0x00, // -OOOOOOOOOO---OOOOOOOOO-........
0x3f, 0xe3, 0xfc, 0x00, // --OOOOOOOOO---OOOOOOOO--........
0x1f, 0xe3, 0xfc, 0x00, // ---OOOOOOOO---OOOOOOOO--........
0x0f, 0xff, 0xf8, 0x00, // ----OOOOOOOOOOOOOOOOO---........
0x07, 0xff, 0xf0, 0x00, // -----OOOOOOOOOOOOOOO----........
0x03, 0xff, 0xc0, 0x00, // ------OOOOOOOOOOOO------........
0x00, 0x7f, 0x00, 0x00, // ---------OOOOOOO--------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
0x00, 0x00, 0x00, 0x00, // ------------------------........
// ASCII: 114, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x7f, 0xff, 0xff, 0xc0, // -OOOOOOOOOOOOOOOOOOOOOOOOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0xf0, 0x00, 0x01, 0xe0, // OOOO-------------------OOOO---..
0xe6, 0x00, 0x01, 0xf0, // OOO--OO----------------OOOOO--..
0xe7, 0x00, 0x01, 0xf8, // OOO--OOO---------------OOOOOO-..
0xe7, 0x00, 0x01, 0xfc, // OOO--OOO---------------OOOOOOO..
0xe7, 0x00, 0x01, 0xfc, // OOO--OOO---------------OOOOOOO..
0xe7, 0x00, 0x01, 0xfc, // OOO--OOO---------------OOOOOOO..
0xe7, 0x00, 0x01, 0xfc, // OOO--OOO---------------OOOOOOO..
0xe7, 0x00, 0x01, 0xfc, // OOO--OOO---------------OOOOOOO..
0xe7, 0x00, 0x01, 0xfc, // OOO--OOO---------------OOOOOOO..
0xe7, 0x00, 0x01, 0xf8, // OOO--OOO---------------OOOOOO-..
0xe6, 0x00, 0x01, 0xf0, // OOO--OO----------------OOOOO--..
0xe0, 0x00, 0x01, 0xe0, // OOO--------------------OOOO---..
0xf0, 0x00, 0x01, 0xc0, // OOOO-------------------OOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0x7f, 0xff, 0xff, 0x80, // -OOOOOOOOOOOOOOOOOOOOOOOO-----..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 115, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x7f, 0xff, 0xff, 0xc0, // -OOOOOOOOOOOOOOOOOOOOOOOOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0xf0, 0x00, 0x01, 0xe0, // OOOO-------------------OOOO---..
0xe6, 0x30, 0x01, 0xf0, // OOO--OO---OO-----------OOOOO--..
0xe7, 0x78, 0x01, 0xf8, // OOO--OOO-OOOO----------OOOOOO-..
0xe7, 0x78, 0x01, 0xfc, // OOO--OOO-OOOO----------OOOOOOO..
0xe7, 0x78, 0x01, 0xfc, // OOO--OOO-OOOO----------OOOOOOO..
0xe7, 0x78, 0x01, 0xfc, // OOO--OOO-OOOO----------OOOOOOO..
0xe7, 0x78, 0x01, 0xfc, // OOO--OOO-OOOO----------OOOOOOO..
0xe7, 0x78, 0x01, 0xfc, // OOO--OOO-OOOO----------OOOOOOO..
0xe7, 0x78, 0x01, 0xfc, // OOO--OOO-OOOO----------OOOOOOO..
0xe7, 0x78, 0x01, 0xf8, // OOO--OOO-OOOO----------OOOOOO-..
0xe6, 0x30, 0x01, 0xf0, // OOO--OO---OO-----------OOOOO--..
0xe0, 0x00, 0x01, 0xe0, // OOO--------------------OOOO---..
0xf0, 0x00, 0x01, 0xc0, // OOOO-------------------OOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0x7f, 0xff, 0xff, 0x80, // -OOOOOOOOOOOOOOOOOOOOOOOO-----..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 116, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x7f, 0xff, 0xff, 0xc0, // -OOOOOOOOOOOOOOOOOOOOOOOOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0xf0, 0x00, 0x01, 0xe0, // OOOO-------------------OOOO---..
0xe6, 0x33, 0x81, 0xf0, // OOO--OO---OO--OOO------OOOOO--..
0xe7, 0x7b, 0x81, 0xf8, // OOO--OOO-OOOO-OOO------OOOOOO-..
0xe7, 0x7b, 0x81, 0xfc, // OOO--OOO-OOOO-OOO------OOOOOOO..
0xe7, 0x7b, 0x81, 0xfc, // OOO--OOO-OOOO-OOO------OOOOOOO..
0xe7, 0x7b, 0x81, 0xfc, // OOO--OOO-OOOO-OOO------OOOOOOO..
0xe7, 0x7b, 0x81, 0xfc, // OOO--OOO-OOOO-OOO------OOOOOOO..
0xe7, 0x7b, 0x81, 0xfc, // OOO--OOO-OOOO-OOO------OOOOOOO..
0xe7, 0x7b, 0x81, 0xfc, // OOO--OOO-OOOO-OOO------OOOOOOO..
0xe7, 0x7b, 0x81, 0xf8, // OOO--OOO-OOOO-OOO------OOOOOO-..
0xe6, 0x33, 0x81, 0xf0, // OOO--OO---OO--OOO------OOOOO--..
0xe0, 0x00, 0x01, 0xe0, // OOO--------------------OOOO---..
0xf0, 0x00, 0x01, 0xc0, // OOOO-------------------OOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0x7f, 0xff, 0xff, 0x80, // -OOOOOOOOOOOOOOOOOOOOOOOO-----..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 117, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x7f, 0xff, 0xff, 0xc0, // -OOOOOOOOOOOOOOOOOOOOOOOOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0xf0, 0x00, 0x01, 0xe0, // OOOO-------------------OOOO---..
0xe6, 0x33, 0x9d, 0xf0, // OOO--OO---OO--OOO--OOO-OOOOO--..
0xe7, 0x7b, 0x9d, 0xf8, // OOO--OOO-OOOO-OOO--OOO-OOOOOO-..
0xe7, 0x7b, 0x9d, 0xfc, // OOO--OOO-OOOO-OOO--OOO-OOOOOOO..
0xe7, 0x7b, 0x9d, 0xfc, // OOO--OOO-OOOO-OOO--OOO-OOOOOOO..
0xe7, 0x7b, 0x9d, 0xfc, // OOO--OOO-OOOO-OOO--OOO-OOOOOOO..
0xe7, 0x7b, 0x9d, 0xfc, // OOO--OOO-OOOO-OOO--OOO-OOOOOOO..
0xe7, 0x7b, 0x9d, 0xfc, // OOO--OOO-OOOO-OOO--OOO-OOOOOOO..
0xe7, 0x7b, 0x9d, 0xfc, // OOO--OOO-OOOO-OOO--OOO-OOOOOOO..
0xe7, 0x7b, 0x9d, 0xf8, // OOO--OOO-OOOO-OOO--OOO-OOOOOO-..
0xe6, 0x33, 0x99, 0xf0, // OOO--OO---OO--OOO--OO--OOOOO--..
0xe0, 0x00, 0x01, 0xe0, // OOO--------------------OOOO---..
0xf0, 0x00, 0x01, 0xc0, // OOOO-------------------OOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0x7f, 0xff, 0xff, 0x80, // -OOOOOOOOOOOOOOOOOOOOOOOO-----..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 118, char width: 30
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x7f, 0xff, 0xff, 0xc0, // -OOOOOOOOOOOOOOOOOOOOOOOOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0xf0, 0x00, 0x01, 0xe0, // OOOO-------------------OOOO---..
0xe7, 0xff, 0xfd, 0xf0, // OOO--OOOOOOOOOOOOOOOOO-OOOOO--..
0xe7, 0xff, 0xfd, 0xf8, // OOO--OOOOOOOOOOOOOOOOO-OOOOOO-..
0xe7, 0xf7, 0xfd, 0xfc, // OOO--OOOOOOO-OOOOOOOOO-OOOOOOO..
0xe7, 0xe3, 0xfd, 0xfc, // OOO--OOOOOO---OOOOOOOO-OOOOOOO..
0xe7, 0xc3, 0xfd, 0xfc, // OOO--OOOOO----OOOOOOOO-OOOOOOO..
0xe7, 0x70, 0x7d, 0xfc, // OOO--OOO-OOO-----OOOOO-OOOOOOO..
0xe7, 0xf8, 0xfd, 0xfc, // OOO--OOOOOOOO---OOOOOO-OOOOOOO..
0xe7, 0xff, 0xfd, 0xfc, // OOO--OOOOOOOOOOOOOOOOO-OOOOOOO..
0xe7, 0xff, 0xfd, 0xf8, // OOO--OOOOOOOOOOOOOOOOO-OOOOOO-..
0xe7, 0xff, 0xfd, 0xf0, // OOO--OOOOOOOOOOOOOOOOO-OOOOO--..
0xe0, 0x00, 0x01, 0xe0, // OOO--------------------OOOO---..
0xf0, 0x00, 0x01, 0xc0, // OOOO-------------------OOO----..
0xff, 0xff, 0xff, 0xc0, // OOOOOOOOOOOOOOOOOOOOOOOOOO----..
0x7f, 0xff, 0xff, 0x80, // -OOOOOOOOOOOOOOOOOOOOOOOO-----..
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
0x00, 0x00, 0x00, 0x00, // ------------------------------..
// ASCII: 119, char width: 30
0x00, 0x7f, 0xf8, 0x00, // ---------OOOOOOOOOOOO---------..
0x01, 0xf0, 0x3e, 0x00, // -------OOOOO------OOOOO-------..
0x07, 0xc0, 0x0f, 0x80, // -----OOOOO----------OOOOO-----..
0x0f, 0xc0, 0x0f, 0xc0, // ----OOOOOO----------OOOOOO----..
0x1f, 0xe0, 0x1f, 0xe0, // ---OOOOOOOO--------OOOOOOOO---..
0x1f, 0xe0, 0x1f, 0xe0, // ---OOOOOOOO--------OOOOOOOO---..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x7f, 0xf0, 0x7f, 0xf8, // -OOOOOOOOOOO-----OOOOOOOOOOOO-..
0x67, 0xe0, 0x1f, 0x98, // -OO--OOOOOO--------OOOOOO--OO-..
0xe3, 0xc0, 0x0f, 0x1c, // OOO---OOOO----------OOOO---OOO..
0xe1, 0x80, 0x06, 0x1c, // OOO----OO------------OO----OOO..
0xc1, 0x80, 0x06, 0x0c, // OO-----OO------------OO-----OO..
0xc3, 0x80, 0x07, 0x0c, // OO----OOO------------OOO----OO..
0xc3, 0x80, 0x07, 0x0c, // OO----OOO------------OOO----OO..
0xc3, 0x80, 0x07, 0x0c, // OO----OOO------------OOO----OO..
0xc1, 0x80, 0x06, 0x0c, // OO-----OO------------OO-----OO..
0xe1, 0x80, 0x06, 0x1c, // OOO----OO------------OO----OOO..
0xe3, 0xc0, 0x0f, 0x1c, // OOO---OOOO----------OOOO---OOO..
0x67, 0xe0, 0x1f, 0x98, // -OO--OOOOOO--------OOOOOO--OO-..
0x7f, 0xf8, 0x7f, 0xf8, // -OOOOOOOOOOOO----OOOOOOOOOOOO-..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x3f, 0xff, 0xff, 0xf0, // --OOOOOOOOOOOOOOOOOOOOOOOOOO--..
0x1f, 0xe0, 0x1f, 0xe0, // ---OOOOOOOO--------OOOOOOOO---..
0x1f, 0xe0, 0x1f, 0xe0, // ---OOOOOOOO--------OOOOOOOO---..
0x0f, 0xc0, 0x0f, 0xc0, // ----OOOOOO----------OOOOOO----..
0x07, 0xc0, 0x07, 0x80, // -----OOOOO-----------OOOO-----..
0x01, 0xf0, 0x3e, 0x00, // -------OOOOO------OOOOO-------..
0x00, 0x7f, 0xf8, 0x00, // ---------OOOOOOOOOOOO---------..
0x00, 0x1f, 0xe0, 0x00, // -----------OOOOOOOO-----------..
// ASCII: 120, char width: 26
0x00, 0x1e, 0x00, 0x00, // -----------OOOO-----------......
0x00, 0x1e, 0x00, 0x00, // -----------OOOO-----------......
0x00, 0x1e, 0x00, 0x00, // -----------OOOO-----------......
0x00, 0x1e, 0x00, 0x00, // -----------OOOO-----------......
0x07, 0x1e, 0x38, 0x00, // -----OOO---OOOO---OOO-----......
0x0f, 0x9e, 0x7c, 0x00, // ----OOOOO--OOOO--OOOOO----......
0x1f, 0x9e, 0x7e, 0x00, // ---OOOOOO--OOOO--OOOOOO---......
0x3f, 0x1e, 0x3f, 0x00, // --OOOOOO---OOOO---OOOOOO--......
0x7e, 0x1e, 0x1f, 0x00, // -OOOOOO----OOOO----OOOOO--......
0x7c, 0x1e, 0x0f, 0x80, // -OOOOO-----OOOO-----OOOOO-......
0x78, 0x1e, 0x0f, 0x80, // -OOOO------OOOO-----OOOOO-......
0xf8, 0x1e, 0x07, 0x80, // OOOOO------OOOO------OOOO-......
0xf8, 0x1e, 0x07, 0xc0, // OOOOO------OOOO------OOOOO......
0xf0, 0x1c, 0x07, 0xc0, // OOOO-------OOO-------OOOOO......
0xf0, 0x00, 0x07, 0xc0, // OOOO-----------------OOOOO......
0xf0, 0x00, 0x07, 0xc0, // OOOO-----------------OOOOO......
0xf8, 0x00, 0x07, 0xc0, // OOOOO----------------OOOOO......
0xf8, 0x00, 0x07, 0x80, // OOOOO----------------OOOO-......
0x78, 0x00, 0x0f, 0x80, // -OOOO---------------OOOOO-......
0x7c, 0x00, 0x0f, 0x80, // -OOOOO--------------OOOOO-......
0x3e, 0x00, 0x1f, 0x00, // --OOOOO------------OOOOO--......
0x3f, 0x00, 0x3f, 0x00, // --OOOOOO----------OOOOOO--......
0x1f, 0xc0, 0xfe, 0x00, // ---OOOOOOO------OOOOOOO---......
0x0f, 0xff, 0xfc, 0x00, // ----OOOOOOOOOOOOOOOOOO----......
0x07, 0xff, 0xf8, 0x00, // -----OOOOOOOOOOOOOOOO-----......
0x01, 0xff, 0xe0, 0x00, // -------OOOOOOOOOOOO-------......
0x00, 0x7f, 0x80, 0x00, // ---------OOOOOOOO---------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
// ASCII: 121, char width: 26
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x3e, 0x00, 0x00, // ----------OOOOO-----------......
0x00, 0x3f, 0x00, 0x00, // ----------OOOOOO----------......
0x06, 0x3f, 0x18, 0x00, // -----OO---OOOOOO---OO-----......
0x0f, 0x3f, 0x3c, 0x00, // ----OOOO--OOOOOO--OOOO----......
0x1f, 0xff, 0xfe, 0x00, // ---OOOOOOOOOOOOOOOOOOOO---......
0x3f, 0xff, 0xfe, 0x00, // --OOOOOOOOOOOOOOOOOOOOO---......
0x1f, 0xff, 0xfe, 0x00, // ---OOOOOOOOOOOOOOOOOOOO---......
0x1f, 0xff, 0xfc, 0x00, // ---OOOOOOOOOOOOOOOOOOO----......
0x0f, 0xff, 0xfc, 0x00, // ----OOOOOOOOOOOOOOOOOO----......
0x0f, 0xe1, 0xfc, 0x00, // ----OOOOOOO----OOOOOOO----......
0x3f, 0xc0, 0xff, 0x00, // --OOOOOOOO------OOOOOOOO--......
0xff, 0x80, 0x7f, 0xc0, // OOOOOOOOO--------OOOOOOOOO......
0xff, 0x80, 0x7f, 0xc0, // OOOOOOOOO--------OOOOOOOOO......
0xff, 0x80, 0x7f, 0xc0, // OOOOOOOOO--------OOOOOOOOO......
0xff, 0x80, 0x7f, 0xc0, // OOOOOOOOO--------OOOOOOOOO......
0x7f, 0xc0, 0xff, 0x00, // -OOOOOOOOO------OOOOOOOO--......
0x0f, 0xe1, 0xfc, 0x00, // ----OOOOOOO----OOOOOOO----......
0x0f, 0xff, 0xfc, 0x00, // ----OOOOOOOOOOOOOOOOOO----......
0x1f, 0xff, 0xfc, 0x00, // ---OOOOOOOOOOOOOOOOOOO----......
0x1f, 0xff, 0xfe, 0x00, // ---OOOOOOOOOOOOOOOOOOOO---......
0x3f, 0xff, 0xff, 0x00, // --OOOOOOOOOOOOOOOOOOOOOO--......
0x1f, 0xff, 0xfe, 0x00, // ---OOOOOOOOOOOOOOOOOOOO---......
0x0f, 0x3f, 0x3c, 0x00, // ----OOOO--OOOOOO--OOOO----......
0x06, 0x3f, 0x18, 0x00, // -----OO---OOOOOO---OO-----......
0x00, 0x3f, 0x00, 0x00, // ----------OOOOOO----------......
0x00, 0x3e, 0x00, 0x00, // ----------OOOOO-----------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
0x00, 0x00, 0x00, 0x00, // --------------------------......
// ASCII: 122, char width: 34
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x0f, 0xfc, 0x00, // ------------OOOOOOOOOO----------
0x00, 0xff, 0xff, 0xc0, // --------OOOOOOOOOOOOOOOOOO------
0x03, 0xff, 0xff, 0xf0, // ------OOOOOOOOOOOOOOOOOOOOOO----
0x0f, 0xff, 0xff, 0xfc, // ----OOOOOOOOOOOOOOOOOOOOOOOOOO--
0x1f, 0xf8, 0x03, 0xff, // ---OOOOOOOOOO---------OOOOOOOOOO
0x7f, 0xc0, 0x00, 0x7f, // -OOOOOOOOO---------------OOOOOOO
0x7f, 0x07, 0xf8, 0x1f, // -OOOOOOO-----OOOOOOOO------OOOOO
0x7c, 0x3f, 0xff, 0x0f, // -OOOOO----OOOOOOOOOOOOOO----OOOO
0x18, 0xff, 0xff, 0xc3, // ---OO---OOOOOOOOOOOOOOOOOO----OO
0x01, 0xff, 0xff, 0xe0, // -------OOOOOOOOOOOOOOOOOOOO-----
0x03, 0xfc, 0x0f, 0xf8, // ------OOOOOOOO------OOOOOOOOO---
0x07, 0xf0, 0x03, 0xf8, // -----OOOOOOO----------OOOOOOO---
0x03, 0xc0, 0x00, 0xf0, // ------OOOO--------------OOOO----
0x01, 0x83, 0xf0, 0x60, // -------OO-----OOOOOO-----OO-----
0x00, 0x1f, 0xfe, 0x00, // -----------OOOOOOOOOOOO---------
0x00, 0x3f, 0xff, 0x80, // ----------OOOOOOOOOOOOOOO-------
0x00, 0x3f, 0xff, 0x00, // ----------OOOOOOOOOOOOOO--------
0x00, 0x1e, 0x0e, 0x00, // -----------OOOO-----OOO---------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x01, 0xe0, 0x00, // ---------------OOOO-------------
0x00, 0x03, 0xf0, 0x00, // --------------OOOOOO------------
0x00, 0x01, 0xe0, 0x00, // ---------------OOOO-------------
0x00, 0x00, 0xc0, 0x00, // ----------------OO--------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
0x00, 0x00, 0x00, 0x00, // --------------------------------
};
static const uint8_t symbol_30_widths[26] =
{
30, 26, 32, 24, 26, 26, 30, 24,
30, 21, 21, 30, 17, 17, 24, 30,
24, 30, 30, 30, 30, 30, 30, 26,
26, 34,
};
static const font_t symbol_30_dsc =
{
26, // Letter count
97, // First ascii code
4, // Letters width (bytes)
30, // Letters height (row)
0, // Fixed width or 0 if variable
symbol_30_widths,
symbol_30_bitmaps
};
const font_t * symbol_30_get_dsc(void)
{
return &symbol_30_dsc;
}
#endif

View File

@@ -1,16 +0,0 @@
#ifndef SYMBOL_30_H
#define SYMBOL_30_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_SYMBOL_30 != 0
#include <stdint.h>
#include "../font.h"
const font_t * symbol_30_get_dsc(void);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +0,0 @@
#ifndef SYMBOL_60_H
#define SYMBOL_60_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_SYMBOL_60 != 0
#include <stdint.h>
#include "../font.h"
const font_t * symbol_60_get_dsc(void);
#endif
#endif

View File

@@ -1,41 +0,0 @@
#ifndef SYMBOL_DEF_H
#define SYMBOL_DEF_H
/*Use ISO8859-1 encoding in the IDE*/
#include "lv_conf.h"
#if USE_FONT_SYMBOL_30 != 0
#include <stdint.h>
#include "../font.h"
#define SYMBOL_DRIVE "a"
#define SYMBOL_FILE "b"
#define SYMBOL_FOLDER "c"
#define SYMBOL_DELETE "d"
#define SYMBOL_SAVE "e"
#define SYMBOL_EDIT "f"
#define SYMBOL_OK "g"
#define SYMBOL_CLOSE "h"
#define SYMBOL_DOWN "i"
#define SYMBOL_LEFT "j"
#define SYMBOL_RIGHT "k"
#define SYMBOL_UP "l"
#define SYMBOL_BT "m"
#define SYMBOL_THERM "n"
#define SYMBOL_GPS "o"
#define SYMBOL_WARN "p"
#define SYMBOL_INFO "q"
#define SYMBOL_BATT1 "r"
#define SYMBOL_BATT2 "s"
#define SYMBOL_BATT3 "t"
#define SYMBOL_BATT4 "u"
#define SYMBOL_BATTCH "v"
#define SYMBOL_HELP "w"
#define SYMBOL_POWER "x"
#define SYMBOL_SETUP "y"
#define SYMBOL_WIFI "z"
#endif
#endif /*SYMBOL_DEF_H*/

View File

@@ -1,212 +0,0 @@
/**
* @file font.c
*
*/
/*********************
* INCLUDES
*********************/
#include "text.h"
#include "misc/math/math_base.h"
/*********************
* DEFINES
*********************/
#define TXT_NO_BREAK_FOUND UINT16_MAX
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool txt_is_break_char(char letter);
/**********************
* STATIC VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Get size of a text
* @param size_res pointer to a 'point_t' variable to store the result
* @param text pointer to a text
* @param font pinter to font of the text
* @param letter_space letter space of the text
* @param line_space line space of the text
* @param max_width max with of the text (break the lines to fit this size) Set LV_CORD_MAX to avoid line breaks
*/
void txt_get_size(point_t * size_res, const char * text, const font_t * font,
uint16_t letter_space, uint16_t line_space, cord_t max_width)
{
size_res->x = 0;
size_res->y = 0;
if(text == NULL) return;
if(font == NULL) return;
uint32_t line_start = 0;
uint32_t new_line_start = 0;
cord_t act_line_length;
uint8_t letter_height = font_get_height(font);
/*Calc. the height and longest line*/
while (text[line_start] != '\0')
{
new_line_start += txt_get_next_line(&text[line_start], font, letter_space, max_width);
size_res->y += letter_height;
size_res->y += line_space;
/*Calculate the the longest line*/
act_line_length = txt_get_width(&text[line_start], new_line_start - line_start,
font, letter_space);
size_res->x = MATH_MAX(act_line_length, size_res->x);
line_start = new_line_start;
}
if(line_start != 0 && (text[line_start - 1] == '\n' || text[line_start - 1] == '\r')) {
size_res->y += letter_height + line_space;
}
/*Correction with the last line space or set the height manually if the text is empty*/
if(size_res->y == 0) size_res->y = letter_height;
else size_res->y -= line_space;
}
/**
* Get the next line of text. Check line length and break chars too.
* @param txt a '\0' terminated string
* @param font pointer to a font
* @param letter_space letter space
* @param max_l max line length
* @return the index of the first char of the new line
*/
uint16_t txt_get_next_line(const char * txt, const font_t * font,
uint16_t letter_space, cord_t max_l)
{
if(txt == NULL) return 0;
if(font == NULL) return 0;
uint32_t i = 0;
cord_t act_l = 0;
uint16_t last_break = TXT_NO_BREAK_FOUND;
while(txt[i] != '\0') {
/*Check for new line chars*/
if(txt[i] == '\n' || txt[i] == '\r') {
/*Handle \n\r and \r\n as well*/
if(txt[i] == '\n' && txt[i + 1] == '\r') {
i++;
} else if(txt[i] == '\r' && txt[i + 1] == '\n') {
i++;
}
return i+1; /*Return with the first letter of the next line*/
} else { /*Check the actual length*/
act_l += font_get_width(font, txt[i]);
/*If the txt is too long then finish, this is the line end*/
if(act_l > max_l) {
/*If already a break character is found, then break there*/
if(last_break != TXT_NO_BREAK_FOUND && txt_is_break_char(txt[i]) == false) {
i = last_break;
}
while(txt[i] == ' ') i++;
/* Do not let to return without doing nothing.
* Find at least one character */
if(i == 0) i++;
return i;
}
/*If this char still can fit to this line then check if
* txt can be broken here later */
else if(txt_is_break_char(txt[i])) {
last_break = i;
last_break++;/*Go to the next char, the break char stays in this line*/
}
}
act_l += letter_space;
i++;
}
return i;
}
/**
* Give the length of a text with a given font
* @param txt a '\0' terminate string
* @param char_num number of characters in 'txt'
* @param font pointer to a font
* @param letter_space letter sapce
* @return length of a char_num long text
*/
cord_t txt_get_width(const char * txt, uint16_t char_num,
const font_t * font, uint16_t letter_space)
{
if(txt == NULL) return 0;
if(font == NULL) return 0;
uint16_t i;
cord_t len = 0;
if(char_num != 0) {
for(i = 0; i < char_num; i++) {
len += font_get_width(font, txt[i]);
len += letter_space;
}
/*Trim closing spaces */
for(i = char_num - 1; i > 0; i--) {
if(txt[i] == ' ') {
len -= font_get_width(font, txt[i]);
len -= letter_space;
} else {
break;
}
}
/*Correct the last letter space,
* because thee is no letter space after the last char*/
len -= letter_space;
}
return len;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Test if char is break char or not (a text can broken here or not)
* @param letter a letter
* @return false: 'letter' is not break char
*/
static bool txt_is_break_char(char letter)
{
uint8_t i;
bool ret = false;
/*Compare the letter to TXT_BREAK_CHARS*/
for(i = 0; LV_TXT_BREAK_CHARS[i] != '\0'; i++) {
if(letter == LV_TXT_BREAK_CHARS[i]) {
ret = true; /*If match then it is break char*/
break;
}
}
return ret;
}

View File

@@ -1,69 +0,0 @@
/**
* @file text.h
*
*/
#ifndef TEXT_H
#define TEXT_H
/*********************
* INCLUDES
*********************/
#include <lvgl/lv_misc/area.h>
#include <stdbool.h>
#include "font.h"
#include "area.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Get size of a text
* @param size_res pointer to a 'point_t' variable to store the result
* @param text pointer to a text
* @param font pinter to font of the text
* @param letter_space letter space of the text
* @param line_space line space of the text
* @param max_width max with of the text (break the lines to fit this size) Set LV_CORD_MAX to avoid line breaks
*/
void txt_get_size(point_t * size_res, const char * text, const font_t * font,
uint16_t letter_space, uint16_t line_space, cord_t max_width);
/**
* Get the next line of text. Check line length and break chars too.
* @param txt a '\0' terminated string
* @param font_p pointer to a font
* @param letter_space letter space
* @param max_l max line length
* @return the index of the first char of the new line
*/
uint16_t txt_get_next_line(const char * txt, const font_t * font_p,
uint16_t letter_space, cord_t max_l);
/**
* Give the length of a text with a given font
* @param txt a '\0' terminate string
* @param char_num number of characters in 'txt'
* @param font_p pointer to a font
* @param letter_space letter sapce
* @return length of a char_num long text
*/
cord_t txt_get_width(const char * txt, uint16_t char_num,
const font_t * font_p, uint16_t letter_space);
/**********************
* MACROS
**********************/
#endif

View File

@@ -1,476 +0,0 @@
/**
* @file lv_dispi.c
*
*/
/*********************
* INCLUDES
********************/
#include "lv_conf.h"
#include "misc/os/ptask.h"
#include "misc/math/math_base.h"
#include "lv_dispi.h"
#include "../lv_draw/lv_draw_rbasic.h"
#include "hal/indev/indev.h"
#include "hal/systick/systick.h"
#include "lv_obj.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static void dispi_task(void * param);
static void dispi_proc_point(lv_dispi_t * dispi_p, cord_t x, cord_t y);
static void dispi_proc_press(lv_dispi_t * dispi_p);
static void disi_proc_release(lv_dispi_t * dispi_p);
static lv_obj_t * dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t * obj);
static void dispi_drag(lv_dispi_t * dispi_p);
static void dispi_drag_throw(lv_dispi_t * dispi_p);
/**********************
* STATIC VARIABLES
**********************/
static ptask_t* dispi_task_p;
static bool lv_dispi_reset_qry;
static bool lv_dispi_reset_now;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the display input subsystem
*/
void lv_dispi_init(void)
{
lv_dispi_reset_qry = false;
lv_dispi_reset_now = false;
#if LV_DISPI_READ_PERIOD != 0
dispi_task_p = ptask_create(dispi_task, LV_DISPI_READ_PERIOD, PTASK_PRIO_MID, NULL);
#else
dispi_task_p = ptask_create(dispi_task, 1, PTASK_PRIO_OFF); /*Not use lv_dispi*/
#endif
}
/**
* Reset all display inputs
*/
void lv_dispi_reset(void)
{
lv_dispi_reset_qry = true;
}
/**
* Reset the long press state of a display input
* @param dispi pointer to a display input
*/
void lv_dispi_reset_lpr(lv_dispi_t * dispi)
{
dispi->long_press_sent = 0;
dispi->lpr_rep_time_stamp = systick_get();
dispi->press_time_stamp = systick_get();
}
/**
* Get the last point on display input
* @param dispi pointer to a display input
* @param point pointer to a point to store the result
*/
void lv_dispi_get_point(lv_dispi_t * dispi, point_t * point)
{
point->x = dispi->act_point.x;
point->y = dispi->act_point.y;
}
/**
* Check if there is dragging on display input or not
* @param dispi pointer to a display input
* @return true: drag is in progress
*/
bool lv_dispi_is_dragging(lv_dispi_t * dispi)
{
return dispi->drag_in_prog == 0 ? false : true;
}
/**
* Get the vector of dragging on a display input
* @param dispi pointer to a display input
* @param point pointer to a point to store the vector
*/
void lv_dispi_get_vect(lv_dispi_t * dispi, point_t * point)
{
point->x = dispi->vect.x;
point->y = dispi->vect.y;
}
/**
* Do nothing until the next release
* @param dispi pointer to a display input
*/
void lv_dispi_wait_release(lv_dispi_t * dispi)
{
dispi->wait_release = 1;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Called periodically to handle the display inputs
* @param param unused
*/
static void dispi_task(void * param)
{
static lv_dispi_t dispi[INDEV_NUM];
cord_t x;
cord_t y;
uint8_t i;
for (i = 0; i < INDEV_NUM; i++) {
dispi[i].pressed = indev_get(i, &x, &y);
dispi_proc_point(&dispi[i], x, y);
}
/*If reset query occurred in this round then set a flag to
* ask the dispis to reset themself in the next round */
if(lv_dispi_reset_qry != false) {
lv_dispi_reset_qry = false;
lv_dispi_reset_now = true;
}
/*If now a reset occurred then clear the flag*/
else if (lv_dispi_reset_now != false){
lv_dispi_reset_now = false;
}
}
/**
* Process new points by a display input. dispi_p->pressed has to be set
* @param dispi_p pointer to a display input
* @param x x coordinate of the next point
* @param y y coordinate of the next point
*/
static void dispi_proc_point(lv_dispi_t * dispi_p, cord_t x, cord_t y)
{
#if LV_ANTIALIAS != 0 && LV_VDB_SIZE != 0
dispi_p->act_point.x = x * LV_DOWNSCALE;
dispi_p->act_point.y = y * LV_DOWNSCALE;
#else
dispi_p->act_point.x = x;
dispi_p->act_point.y = y;
#endif
/*Handle the reset query*/
if(lv_dispi_reset_now != false) {
dispi_p->act_obj = NULL;
dispi_p->last_obj = NULL;
dispi_p->drag_in_prog = 0;
dispi_p->long_press_sent = 0;
dispi_p->press_time_stamp = 0;
dispi_p->lpr_rep_time_stamp = 0;
dispi_p->vect_sum.x = 0;
dispi_p->vect_sum.y = 0;
}
if(dispi_p->pressed != false){
#if LV_DISPI_TP_MARKER != 0
area_t area;
area.x1 = x;
area.y1 = y;
area.x2 = x + 1;
area.y2 = y + 1;
lv_rfill(&area, NULL, COLOR_MAKE(0xFF, 0, 0), OPA_COVER);
#endif
dispi_proc_press(dispi_p);
} else {
disi_proc_release(dispi_p);
}
dispi_p->last_point.x = dispi_p->act_point.x;
dispi_p->last_point.y = dispi_p->act_point.y;
}
/**
* Process the pressed state
* @param dispi_p pointer to a display input
*/
static void dispi_proc_press(lv_dispi_t * dispi_p)
{
lv_obj_t * pr_obj = dispi_p->act_obj;
if(dispi_p->wait_release != 0) return;
/*If there is no last object then search*/
if(dispi_p->act_obj == NULL) {
pr_obj = dispi_search_obj(dispi_p, lv_scr_act());
}
/*If there is last object but it can not be dragged also search*/
else if(lv_obj_get_drag(dispi_p->act_obj) == false) {/*Now act_obj != NULL*/
pr_obj = dispi_search_obj(dispi_p, lv_scr_act());
}
/*If a dragable object was the last then keep it*/
else {
}
/*If a new object was found reset some variables and send a pressed signal*/
if(pr_obj != dispi_p->act_obj) {
dispi_p->last_point.x = dispi_p->act_point.x;
dispi_p->last_point.y = dispi_p->act_point.y;
/*If a new object found the previous was lost, so send a signal*/
if(dispi_p->act_obj != NULL) {
dispi_p->act_obj->signal_f(dispi_p->act_obj,
LV_SIGNAL_PRESS_LOST, dispi_p);
}
if(pr_obj != NULL) {
/* Save the time when the obj pressed.
* It is necessary to count the long press time.*/
dispi_p->press_time_stamp = systick_get();
dispi_p->long_press_sent = 0;
dispi_p->drag_in_prog = 0;
dispi_p->vect_sum.x = 0;
dispi_p->vect_sum.y = 0;
/*Search for 'top' attribute*/
lv_obj_t * i = pr_obj;
lv_obj_t * last_top = NULL;
while(i != NULL){
if(i->top_en != 0) last_top = i;
i = lv_obj_get_parent(i);
}
if(last_top != NULL) {
/*Move the last_top object to the foreground*/
lv_obj_t * par =lv_obj_get_parent(last_top);
/*After list change it will be the new head*/
ll_chg_list(&par->child_ll, &par->child_ll, last_top);
lv_obj_inv(last_top);
}
/*Send a signal about the press*/
pr_obj->signal_f(pr_obj, LV_SIGNAL_PRESSED, dispi_p);
}
}
/* The reset can be set in the signal function.
* In case of reset query ignore the remaining parts.*/
if(lv_dispi_reset_qry == false) {
dispi_p->act_obj = pr_obj; /*Save the pressed object*/
dispi_p->last_obj = dispi_p->act_obj; /*Refresh the last_obj*/
/*Calculate the vector*/
dispi_p->vect.x = dispi_p->act_point.x - dispi_p->last_point.x;
dispi_p->vect.y = dispi_p->act_point.y - dispi_p->last_point.y;
/*If there is active object and it can be dragged run the drag*/
if(dispi_p->act_obj != NULL) {
dispi_p->act_obj->signal_f(dispi_p->act_obj, LV_SIGNAL_PRESSING, dispi_p);
dispi_drag(dispi_p);
/*If there is no drag then check for long press time*/
if(dispi_p->drag_in_prog == 0 && dispi_p->long_press_sent == 0) {
/*Send a signal about the long press if enough time elapsed*/
if(systick_elaps(dispi_p->press_time_stamp) > LV_DISPI_LONG_PRESS_TIME) {
pr_obj->signal_f(pr_obj, LV_SIGNAL_LONG_PRESS, dispi_p);
/*Mark the signal sending to do not send it again*/
dispi_p->long_press_sent = 1;
/*Save the long press time stamp for the long press repeat handler*/
dispi_p->lpr_rep_time_stamp = systick_get();
}
}
/*Send long press repeated signal*/
if(dispi_p->drag_in_prog == 0 && dispi_p->long_press_sent == 1) {
/*Send a signal about the long press repeate if enough time elapsed*/
if(systick_elaps(dispi_p->lpr_rep_time_stamp) > LV_DISPI_LONG_PRESS_REP_TIME) {
pr_obj->signal_f(pr_obj, LV_SIGNAL_LONG_PRESS_REP, dispi_p);
dispi_p->lpr_rep_time_stamp = systick_get();
}
}
}
}
}
/**
* Process the released state
* @param dispi_p pointer to a display input
*/
static void disi_proc_release(lv_dispi_t * dispi_p)
{
if(dispi_p->wait_release != 0) {
dispi_p->act_obj = NULL;
dispi_p->last_obj = NULL;
dispi_p->press_time_stamp = 0;
dispi_p->lpr_rep_time_stamp = 0;
dispi_p->wait_release = 0;
}
/*Forgot the act obj and send a released signal */
if(dispi_p->act_obj != NULL) {
dispi_p->act_obj->signal_f(dispi_p->act_obj,
LV_SIGNAL_RELEASED, dispi_p);
dispi_p->act_obj = NULL;
dispi_p->press_time_stamp = 0;
dispi_p->lpr_rep_time_stamp = 0;
}
/*The reset can be set in the signal function.
* In case of reset query ignore the remaining parts.*/
if(dispi_p->last_obj != NULL && lv_dispi_reset_qry == false) {
dispi_drag_throw(dispi_p);
}
}
/**
* Search the most top, clickable object on the last point of a display input
* @param dispi_p pointer to a display input
* @param obj pointer to a start object, typically the screen
* @return pointer to the found object or NULL if there was no suitable object
*/
static lv_obj_t * dispi_search_obj(const lv_dispi_t * dispi_p, lv_obj_t * obj)
{
lv_obj_t * found_p = NULL;
/*If the point is on this object*/
/*Check its children too*/
if(area_is_point_on(&obj->cords, &dispi_p->act_point)) {
lv_obj_t * i;
LL_READ(obj->child_ll, i) {
found_p = dispi_search_obj(dispi_p, i);
/*If a child was found then break*/
if(found_p != NULL) {
break;
}
}
/*If then the children was not ok, but this obj is clickable
* and it or its parent is not hidden then save this object*/
if(found_p == NULL && lv_obj_get_click(obj) != false) {
lv_obj_t * i = obj;
while(i != NULL) {
if(lv_obj_get_hidden(i) == true) break;
i = lv_obj_get_parent(i);
}
/*No parent found with hidden == true*/
if(i == NULL) found_p = obj;
}
}
return found_p;
}
/**
* Handle the dragging of dispi_p->act_obj
* @param dispi_p pointer to a display input
*/
static void dispi_drag(lv_dispi_t * dispi_p)
{
lv_obj_t * drag_obj = dispi_p->act_obj;
/*If drag parent is active check recursively the drag_parent attribute*/
while(lv_obj_get_drag_parent(drag_obj) != false &&
drag_obj != NULL) {
drag_obj = lv_obj_get_parent(drag_obj);
}
if(drag_obj == NULL) return;
if(lv_obj_get_drag(drag_obj) == false) return;
/*If still there is no drag then count the movement*/
if(dispi_p->drag_in_prog == 0) {
dispi_p->vect_sum.x += dispi_p->vect.x;
dispi_p->vect_sum.y += dispi_p->vect.y;
/*If a move is greater then LV_DRAG_LIMIT then begin the drag*/
if(MATH_ABS(dispi_p->vect_sum.x) >= LV_DISPI_DRAG_LIMIT ||
MATH_ABS(dispi_p->vect_sum.y) >= LV_DISPI_DRAG_LIMIT)
{
dispi_p->drag_in_prog = 1;
drag_obj->signal_f(drag_obj,
LV_SIGNAL_DRAG_BEGIN, dispi_p);
}
}
/*If the drag limit is stepped over then handle the dragging*/
if(dispi_p->drag_in_prog != 0) {
/*Set new position if the vector is not zero*/
if(dispi_p->vect.x != 0 ||
dispi_p->vect.y != 0) {
/*Get the coordinates of the object end modify them*/
cord_t act_x = lv_obj_get_x(drag_obj) + dispi_p->vect.x;
cord_t act_y = lv_obj_get_y(drag_obj) + dispi_p->vect.y;
lv_obj_set_pos(drag_obj, act_x, act_y);
}
}
}
/**
* Handle throwing by drag if the drag is ended
* @param dispi_p pointer to a display input
*/
static void dispi_drag_throw(lv_dispi_t * dispi_p)
{
if(dispi_p->drag_in_prog == 0) return;
/*Set new position if the vector is not zero*/
lv_obj_t * drag_obj = dispi_p->last_obj;
/*If drag parent is active check recursively the drag_parent attribute*/
while(lv_obj_get_drag_parent(drag_obj) != false &&
drag_obj != NULL) {
drag_obj = lv_obj_get_parent(drag_obj);
}
if(drag_obj == NULL) return;
/*Return if the drag throw is not enabled*/
if(lv_obj_get_drag_throw(drag_obj) == false ){
dispi_p->drag_in_prog = 0;
drag_obj->signal_f(drag_obj, LV_SIGNAL_DRAG_END, dispi_p);
return;
}
/*Reduce the vectors*/
dispi_p->vect.x = dispi_p->vect.x * (100 -LV_DISPI_DRAG_THROW) / 100;
dispi_p->vect.y = dispi_p->vect.y * (100 -LV_DISPI_DRAG_THROW) / 100;
if(dispi_p->vect.x != 0 ||
dispi_p->vect.y != 0)
{
/*Get the coordinates and modify them*/
cord_t act_x = lv_obj_get_x(drag_obj) + dispi_p->vect.x;
cord_t act_y = lv_obj_get_y(drag_obj) + dispi_p->vect.y;
lv_obj_set_pos(drag_obj, act_x, act_y);
}
/*If the vectors become 0 -> drag_in_prog = 0 and send a drag end signal*/
else {
dispi_p->drag_in_prog = 0;
drag_obj->signal_f(drag_obj, LV_SIGNAL_DRAG_END, dispi_p);
}
}

View File

@@ -1,99 +0,0 @@
/**
* @file lv_dispi.h
*
*/
#ifndef LV_DISPI_H
#define LV_DISPI_H
/*********************
* INCLUDES
*********************/
#include "lv_obj.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef struct
{
bool pressed;
point_t act_point;
point_t last_point;
point_t vect;
point_t vect_sum;
lv_obj_t * act_obj;
lv_obj_t * last_obj;
uint32_t press_time_stamp;
uint32_t lpr_rep_time_stamp;
/*Flags*/
uint8_t drag_in_prog :1;
uint8_t long_press_sent :1;
uint8_t wait_release :1;
}lv_dispi_t;
typedef enum
{
LV_ACTION_RES_INV = 0,
LV_ACTION_RES_OK,
}lv_action_res_t;
typedef lv_action_res_t ( * lv_action_t) (struct __LV_OBJ_T * obj, lv_dispi_t * dispi);
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Initialize the display input subsystem
*/
void lv_dispi_init(void);
/**
* Reset all display inputs
*/
void lv_dispi_reset(void);
/**
* Reset the long press state of a display input
* @param dispi pointer to a display input
*/
void lv_dispi_reset_lpr(lv_dispi_t * dispi);
/**
* Get the last point on display input
* @param dispi pointer to a display input
* @param point pointer to a point to store the result
*/
void lv_dispi_get_point(lv_dispi_t * dispi, point_t * point);
/**
* Check if there is dragging on display input or not
* @param dispi pointer to a display input
* @return true: drag is in progress
*/
bool lv_dispi_is_dragging(lv_dispi_t * dispi);
/**
* Get the vector of dragging on a display input
* @param dispi pointer to a display input
* @param point pointer to a point to store the vector
*/
void lv_dispi_get_vect(lv_dispi_t * dispi, point_t * point);
/**
* Do nothing until the next release
* @param dispi pointer to a display input
*/
void lv_dispi_wait_release(lv_dispi_t * dispi);
/**********************
* MACROS
**********************/
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,706 +0,0 @@
/**
* @file lv_obj.h
*
*/
#ifndef LV_OBJ_H
#define LV_OBJ_H
/*********************
* INCLUDES
*********************/
#include <lvgl/lv_misc/area.h>
#include <stddef.h>
#include <stdbool.h>
#include "misc/mem/dyn_mem.h"
#include "misc/mem/linked_list.h"
#include "misc/others/color.h"
/*********************
* DEFINES
*********************/
/*Error check of lv_conf.h*/
#if LV_HOR_RES == 0 || LV_VER_RES == 0
#error "LV: LV_HOR_RES and LV_VER_RES must be greater then 0"
#endif
#if LV_DOWNSCALE != 1 && LV_DOWNSCALE != 2
#error "LV: LV_DOWNSCALE can be only 1 or 2"
#endif
#if LV_VDB_SIZE == 0 && LV_ANTIALIAS != 0
#error "LV: If LV_VDB_SIZE == 0 the antialaissing must be disabled"
#endif
/*New defines*/
#define LV_OBJ_DEF_WIDTH (80 * LV_DOWNSCALE)
#define LV_OBJ_DEF_HEIGHT (60 * LV_DOWNSCALE)
#define ANIM_IN 0x00 /*Animation to show an object. 'OR' it with lv_anim_builtin_t*/
#define ANIM_OUT 0x80 /*Animation to hide an object. 'OR' it with lv_anim_builtin_t*/
#define ANIM_DIR_MASK 0x80 /*ANIM_IN/ANIM_OUT mask*/
/**********************
* TYPEDEFS
**********************/
struct __LV_OBJ_T;
typedef enum
{
LV_DESIGN_DRAW_MAIN,
LV_DESIGN_DRAW_POST,
LV_DESIGN_COVER_CHK,
}lv_design_mode_t;
typedef bool (* lv_design_f_t) (struct __LV_OBJ_T * obj, const area_t * mask_p, lv_design_mode_t mode);
typedef enum
{
LV_SIGNAL_CLEANUP,
LV_SIGNAL_PRESSED,
LV_SIGNAL_PRESSING,
LV_SIGNAL_PRESS_LOST,
LV_SIGNAL_RELEASED,
LV_SIGNAL_LONG_PRESS,
LV_SIGNAL_LONG_PRESS_REP,
LV_SIGNAL_DRAG_BEGIN,
LV_SIGNAL_DRAG_END,
LV_SIGNAL_CHILD_CHG,
LV_SIGNAL_CORD_CHG,
LV_SIGNAL_STYLE_CHG,
LV_SIGNAL_REFR_EXT_SIZE,
}lv_signal_t;
typedef bool (* lv_signal_f_t) (struct __LV_OBJ_T * obj, lv_signal_t sign, void * param);
typedef struct __LV_OBJ_T
{
struct __LV_OBJ_T * par;
ll_dsc_t child_ll;
area_t cords;
lv_signal_f_t signal_f;
lv_design_f_t design_f;
void * ext; /*The object attributes can be extended here*/
void * style_p; /*Object specific style*/
#if LV_OBJ_FREE_P != 0
void * free_p; /*Application specific pointer (set it freely)*/
#endif
/*Attributes and states*/
uint8_t click_en :1; /*1: can be pressed by a display input device*/
uint8_t drag_en :1; /*1: enable the dragging*/
uint8_t drag_throw_en:1; /*1: Enable throwing with drag*/
uint8_t drag_parent :1; /*1. Parent will be dragged instead*/
uint8_t style_iso :1; /*1: The object has got an own style*/
uint8_t hidden :1; /*1: Object is hidden*/
uint8_t top_en :1; /*1: If the object or its children is clicked it goes to the foreground*/
uint8_t reserved :1;
uint8_t protect; /*Automatically happening actions can be prevented. 'OR'ed values from lv_obj_prot_t*/
cord_t ext_size; /*EXTtend the size of the object in every direction. Used to draw shadow, shine etc.*/
uint8_t free_num; /*Application specific identifier (set it freely)*/
opa_t opa;
}lv_obj_t;
/*Protect some attributes (max. 8 bit)*/
typedef enum
{
LV_PROTECT_NONE = 0x00,
LV_PROTECT_CHILD_CHG = 0x01, /*Disable the child change signal. Used by the library*/
LV_PROTECT_OPA = 0x02, /*Prevent lv_obj_set_opar to modify the opacity*/
LV_PROTECT_PARENT = 0x04, /*Prevent automatic parent change (e.g. in lv_page)*/
LV_PROTECT_POS = 0x08, /*Prevent automatic positioning (e.g. in lv_rect layout)*/
}lv_protect_t;
typedef enum
{
LV_ALIGN_CENTER = 0,
LV_ALIGN_IN_TOP_LEFT,
LV_ALIGN_IN_TOP_MID,
LV_ALIGN_IN_TOP_RIGHT,
LV_ALIGN_IN_BOTTOM_LEFT,
LV_ALIGN_IN_BOTTOM_MID,
LV_ALIGN_IN_BOTTOM_RIGHT,
LV_ALIGN_IN_LEFT_MID,
LV_ALIGN_IN_RIGHT_MID,
LV_ALIGN_OUT_TOP_LEFT,
LV_ALIGN_OUT_TOP_MID,
LV_ALIGN_OUT_TOP_RIGHT,
LV_ALIGN_OUT_BOTTOM_LEFT,
LV_ALIGN_OUT_BOTTOM_MID,
LV_ALIGN_OUT_BOTTOM_RIGHT,
LV_ALIGN_OUT_LEFT_TOP,
LV_ALIGN_OUT_LEFT_MID,
LV_ALIGN_OUT_LEFT_BOTTOM,
LV_ALIGN_OUT_RIGHT_TOP,
LV_ALIGN_OUT_RIGHT_MID,
LV_ALIGN_OUT_RIGHT_BOTTOM,
}lv_align_t;
typedef struct
{
color_t color;
uint8_t transp :1;
}lv_objs_t;
typedef enum
{
LV_OBJS_DEF,
LV_OBJS_SCR,
LV_OBJS_TRANSP,
}lv_objs_builtin_t;
typedef enum
{
LV_ANIM_NONE = 0,
LV_ANIM_FADE, /*Animate the opacity*/
LV_ANIM_FLOAT_TOP, /*Float from/to the top*/
LV_ANIM_FLOAT_LEFT, /*Float from/to the left*/
LV_ANIM_FLOAT_BOTTOM, /*Float from/to the bottom*/
LV_ANIM_FLOAT_RIGHT, /*Float from/to the right*/
LV_ANIM_GROW_H, /*Grow/shrink horizontally*/
LV_ANIM_GROW_V, /*Grow/shrink vertically*/
}lv_anim_builtin_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Init. the 'lv' library.
*/
void lv_init(void);
/**
* Mark the object as invalid therefore its current position will be redrawn by 'lv_refr_task'
* @param obj pointer to an object
*/
void lv_obj_inv(lv_obj_t * obj);
/**
* Notify an object about its style is modified
* @param obj pointer to an object
*/
void lv_obj_refr_style(lv_obj_t * obj);
/**
* Notify all object if a style is modified
* @param style pinter to a style. Only objects with this style will be notified
* (NULL to notify all objects)
*/
void lv_style_refr_all(void * style);
/**
* Create a basic object
* @param parent pointer to a parent object.
* If NULL then a screen will be created
* @param copy pointer to a base object, if not NULL then the new object will be copied from it
* @return pointer to the new object
*/
lv_obj_t * lv_obj_create(lv_obj_t * parent, lv_obj_t * copy);
/**
* Delete 'obj' and all of its children
* @param obj
*/
void lv_obj_del(lv_obj_t * obj);
/**
* Signal function of the basic object
* @param obj pointer to an object
* @param sign signal type
* @param param parameter for the signal (depends on signal type)
* @return false: the object become invalid (e.g. deleted)
*/
bool lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param);
/**
* Return with a pointer to built-in style and/or copy it to a variable
* @param style a style name from lv_objs_builtin_t enum
* @param copy_p copy the style to this variable. (NULL if unused)
* @return pointer to an lv_objs_t style
*/
lv_objs_t * lv_objs_get(lv_objs_builtin_t style, lv_objs_t * copy_p);
/**
* Load a new screen
* @param scr pointer to a screen
*/
void lv_scr_load(lv_obj_t * scr);
/**
* Set a new parent for an object. Its relative position will be the same.
* @param obj pointer to an object
* @param parent pointer to the new parent object
*/
void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent);
/**
* Set relative the position of an object (relative to the parent)
* @param obj pointer to an object
* @param x new distance from the left side of the parent
* @param y new distance from the top of the parent
*/
void lv_obj_set_pos(lv_obj_t * obj, cord_t x, cord_t y);
/**
* Set relative the position of an object (relative to the parent).
* The coordinates will be upscaled to compensate LV_DOWNSCALE.
* @param obj pointer to an object
* @param x new distance from the left side of the parent. (will be multiplied with LV_DOWNSCALE)
* @param y new distance from the top of the parent. (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_set_pos_us(lv_obj_t * obj, cord_t x, cord_t y);
/**
* Set the x coordinate of a object
* @param obj pointer to an object
* @param x new distance from the left side from the parent
*/
void lv_obj_set_x(lv_obj_t * obj, cord_t x);
/**
* Set the x coordinate of a object.
* The coordinate will be upscaled to compensate LV_DOWNSCALE.
* @param obj pointer to an object
* @param x new distance from the left side from the parent. (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_set_x_us(lv_obj_t * obj, cord_t x);
/**
* Set the y coordinate of a object
* @param obj pointer to an object
* @param y new distance from the top of the parent
*/
void lv_obj_set_y(lv_obj_t * obj, cord_t y);
/**
* Set the y coordinate of a object.
* The coordinate will be upscaled to compensate LV_DOWNSCALE.
* @param obj pointer to an object
* @param y new distance from the top of the parent. (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_set_y_us(lv_obj_t * obj, cord_t y);
/**
* Set the size of an object
* @param obj pointer to an object
* @param w new width
* @param h new height
*/
void lv_obj_set_size(lv_obj_t * obj, cord_t w, cord_t h);
/**
* Set the size of an object. The coordinates will be upscaled to compensate LV_DOWNSCALE.
* @param obj pointer to an object
* @param w new width (will be multiplied with LV_DOWNSCALE)
* @param h new height (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_set_size_us(lv_obj_t * obj, cord_t w, cord_t h);
/**
* Set the width of an object
* @param obj pointer to an object
* @param w new width
*/
void lv_obj_set_width(lv_obj_t * obj, cord_t w);
/**
* Set the width of an object. The width will be upscaled to compensate LV_DOWNSCALE
* @param obj pointer to an object
* @param w new width (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_set_width_us(lv_obj_t * obj, cord_t w);
/**
* Set the height of an object
* @param obj pointer to an object
* @param h new height
*/
void lv_obj_set_height(lv_obj_t * obj, cord_t h);
/**
* Set the height of an object. The height will be upscaled to compensate LV_DOWNSCALE
* @param obj pointer to an object
* @param h new height (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_set_height_us(lv_obj_t * obj, cord_t h);
/**
* Align an object to an other object.
* @param obj pointer to an object to align
* @param base pointer to an object (if NULL the parent is used). 'obj' will be aligned to it.
* @param align type of alignment (see 'lv_align_t' enum)
* @param x_mod x coordinate shift after alignment
* @param y_mod y coordinate shift after alignment
*/
void lv_obj_align(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_mod, cord_t y_mod);
/**
* Align an object to an other object. The coordinates will be upscaled to compensate LV_DOWNSCALE.
* @param obj pointer to an object to align
* @param base pointer to an object (if NULL the parent is used). 'obj' will be aligned to it.
* @param align type of alignment (see 'lv_align_t' enum)
* @param x_mod x coordinate shift after alignment (will be multiplied with LV_DOWNSCALE)
* @param y_mod y coordinate shift after alignment (will be multiplied with LV_DOWNSCALE)
*/
void lv_obj_align_us(lv_obj_t * obj,lv_obj_t * base, lv_align_t align, cord_t x_mod, cord_t y_mod);
/**
* Set the extended size of an object
* @param obj pointer to an object
* @param ext_size the extended size
*/
void lv_obj_set_ext_size(lv_obj_t * obj, cord_t ext_size);
/**
* Set a new style for an object
* @param obj pointer to an object
* @param style_p pointer to the new style
*/
void lv_obj_set_style(lv_obj_t * obj, void * style);
/**
* Isolate the style of an object. In other words a unique style will be created
* for this object which can be freely modified independently from the style of the
* other objects.
*/
void * lv_obj_iso_style(lv_obj_t * obj, uint32_t style_size);
/**
* Set the opacity of an object
* @param obj pointer to an object
* @param opa 0 (transparent) .. 255(fully cover)
*/
void lv_obj_set_opa(lv_obj_t * obj, uint8_t opa);
/**
* Set the opacity of an object and all of its children
* @param obj pointer to an object
* @param opa 0 (transparent) .. 255(fully cover)
*/
void lv_obj_set_opar(lv_obj_t * obj, uint8_t opa);
/**
* Hide an object. It won't be visible and clickable.
* @param obj pointer to an object
* @param en true: hide the object
*/
void lv_obj_set_hidden(lv_obj_t * obj, bool en);
/**
* Enable or disable the clicking of an object
* @param obj pointer to an object
* @param en true: make the object clickable
*/
void lv_obj_set_click(lv_obj_t * obj, bool en);
/**
* Enable to bring this object to the foreground if it
* or any of its children is clicked
* @param obj pointer to an object
* @param en true: enable the auto top feature
*/
void lv_obj_set_top(lv_obj_t * obj, bool en);
/**
* Enable the dragging of an object
* @param obj pointer to an object
* @param en true: make the object dragable
*/
void lv_obj_set_drag(lv_obj_t * obj, bool en);
/**
* Enable the throwing of an object after is is dragged
* @param obj pointer to an object
* @param en true: enable the drag throw
*/
void lv_obj_set_drag_throw(lv_obj_t * obj, bool en);
/**
* Enable to use parent for drag related operations.
* If trying to drag the object the parent will be moved instead
* @param obj pointer to an object
* @param en true: enable the 'drag parent' for the object
*/
void lv_obj_set_drag_parent(lv_obj_t * obj, bool en);
/**
* Set a bit or bits in the protect filed
* @param obj pointer to an object
* @param prot 'OR'-ed values from lv_obj_prot_t
*/
void lv_obj_set_protect(lv_obj_t * obj, uint8_t prot);
/**
* Clear a bit or bits in the protect filed
* @param obj pointer to an object
* @param prot 'OR'-ed values from lv_obj_prot_t
*/
void lv_obj_clr_protect(lv_obj_t * obj, uint8_t prot);
/**
* Set the signal function of an object.
* Always call the previous signal function in the new.
* @param obj pointer to an object
* @param fp the new signal function
*/
void lv_obj_set_signal_f(lv_obj_t * obj, lv_signal_f_t fp);
/**
* Set a new design function for an object
* @param obj pointer to an object
* @param fp the new design function
*/
void lv_obj_set_design_f(lv_obj_t * obj, lv_design_f_t fp);
/**
* Allocate a new ext. data for an object
* @param obj pointer to an object
* @param ext_size the size of the new ext. data
* @return Normal pointer to the allocated ext
*/
void * lv_obj_alloc_ext(lv_obj_t * obj, uint16_t ext_size);
/**
* Send a 'LV_SIGNAL_REFR_EXT_SIZE' signal to the object
* @param obj pointer to an object
*/
void lv_obj_refr_ext_size(lv_obj_t * obj);
/**
* Set an application specific number for an object.
* It can help to identify objects in the application.
* @param obj pointer to an object
* @param free_num the new free number
*/
void lv_obj_set_free_num(lv_obj_t * obj, uint8_t free_num);
/**
* Set an application specific pointer for an object.
* It can help to identify objects in the application.
* @param obj pointer to an object
* @param free_p the new free pinter
*/
void lv_obj_set_free_p(lv_obj_t * obj, void * free_p);
/**
* Animate an object
* @param obj pointer to an object to animate
* @param type type of animation from 'lv_anim_builtin_t'. 'OR' it with ANIM_IN or ANIM_OUT
* @param time time of animation in milliseconds
* @param delay delay before the animation in milliseconds
* @param cb a function to call when the animation is ready
*/
void lv_obj_anim(lv_obj_t * obj, lv_anim_builtin_t type, uint16_t time, uint16_t delay, void (*cb) (lv_obj_t *));
/**
* Return with the actual screen
* @return pointer to to the actual screen object
*/
lv_obj_t * lv_scr_act(void);
/**
* Return with the screen of an object
* @param obj pointer to an object
* @return pointer to a screen
*/
lv_obj_t * lv_obj_get_scr(lv_obj_t * obj);
/**
* Returns with the parent of an object
* @param obj pointer to an object
* @return pointer to the parent of 'obj'
*/
lv_obj_t * lv_obj_get_parent(lv_obj_t * obj);
/**
* Iterate through the children of an object
* @param obj pointer to an object
* @param child NULL at first call to get the next children
* and the previous return value later
* @return the child after 'act_child' or NULL if no more child
*/
lv_obj_t * lv_obj_get_child(lv_obj_t * obj, lv_obj_t * child);
/**
* Count the children of an object (only children directly on 'obj')
* @param obj pointer to an object
* @return children number of 'obj'
*/
uint16_t lv_obj_get_child_num(lv_obj_t * obj);
/**
* Copy the coordinates of an object to an area
* @param obj pointer to an object
* @param cords_p pointer to an area to store the coordinates
*/
void lv_obj_get_cords(lv_obj_t * obj, area_t * cords_p);
/**
* Get the x coordinate of object
* @param obj pointer to an object
* @return distance of 'obj' from the left side of its parent
*/
cord_t lv_obj_get_x(lv_obj_t * obj);
/**
* Get the y coordinate of object
* @param obj pointer to an object
* @return distance of 'obj' from the top of its parent
*/
cord_t lv_obj_get_y(lv_obj_t * obj);
/**
* Get the width of an object
* @param obj pointer to an object
* @return the width
*/
cord_t lv_obj_get_width(lv_obj_t * obj);
/**
* Get the height of an object
* @param obj pointer to an object
* @return the height
*/
cord_t lv_obj_get_height(lv_obj_t * obj);
/**
* Get the extended size attribute of an object
* @param obj pointer to an object
* @return the extended size attribute
*/
cord_t lv_obj_getext_size(lv_obj_t * obj);
/**
* Get the style pointer of an object
* @param obj pointer to an object
* @return pointer to a style
*/
void * lv_obj_get_style(lv_obj_t * obj);
/**
* Get the opacity of an object
* @param obj pointer to an object
* @return 0 (transparent) .. 255 (fully cover)
*/
opa_t lv_obj_get_opa(lv_obj_t * obj);
/**
* Get the hidden attribute of an object
* @param obj pointer to an object
* @return true: the object is hidden
*/
bool lv_obj_get_hidden(lv_obj_t * obj);
/**
* Get the click enable attribute of an object
* @param obj pointer to an object
* @return true: the object is clickable
*/
bool lv_obj_get_click(lv_obj_t * obj);
/**
* Get the top enable attribute of an object
* @param obj pointer to an object
* @return true: the auto top feture is enabled
*/
bool lv_obj_get_top(lv_obj_t * obj);
/**
* Get the drag enable attribute of an object
* @param obj pointer to an object
* @return true: the object is dragable
*/
bool lv_obj_get_drag(lv_obj_t * obj);
/**
* Get the drag thow enable attribute of an object
* @param obj pointer to an object
* @return true: drag throw is enabled
*/
bool lv_obj_get_drag_throw(lv_obj_t * obj);
/**
* Get the drag parent attribute of an object
* @param obj pointer to an object
* @return true: drag parent is enabled
*/
bool lv_obj_get_drag_parent(lv_obj_t * obj);
/**
* Get the style isolation attribute of an object
* @param obj pointer to an object
* @return pointer to a style
*/
bool lv_obj_get_style_iso(lv_obj_t * obj);
/**
* Get the protect field of an object
* @param obj pointer to an object
* @return protect field ('OR'ed values of lv_obj_prot_t)
*/
uint8_t lv_obj_get_protect(lv_obj_t * obj);
/**
* Check at least one bit of a given protect bitfield is set
* @param obj pointer to an object
* @param prot protect bits to test ('OR'ed values of lv_obj_prot_t)
* @return false: none of the given bits are set, true: at least one bit is set
*/
bool lv_obj_is_protected(lv_obj_t * obj, uint8_t prot);
/**
* Get the signal function of an object
* @param obj pointer to an object
* @return the signal function
*/
lv_signal_f_t lv_obj_get_signal_f(lv_obj_t * obj);
/**
* Get the design function of an object
* @param obj pointer to an object
* @return the design function
*/
lv_design_f_t lv_obj_get_design_f(lv_obj_t * obj);
/**
* Get the ext pointer
* @param obj pointer to an object
* @return the ext pointer but not the dynamic version
* Use it as ext->data1, and NOT da(ext)->data1
*/
void * lv_obj_get_ext(lv_obj_t * obj);
/**
* Get the free number
* @param obj pointer to an object
* @return the free number
*/
uint8_t lv_obj_get_free_num(lv_obj_t * obj);
/**
* Get the free pointer
* @param obj pointer to an object
* @return the free pointer
*/
void * lv_obj_get_free_p(lv_obj_t * obj);
/**********************
* MACROS
**********************/
#define LV_SA(obj, style_type) ((style_type *) obj->style_p)
#define LV_EA(obj, ext_type) ((ext_type *) obj->ext)
#endif

View File

@@ -1,437 +0,0 @@
/**
* @file lv_refr.c
*
*/
/*********************
* INCLUDES
*********************/
#include <stddef.h>
#include "lv_conf.h"
#include "misc/os/ptask.h"
#include "misc/mem/fifo.h"
#include "lv_refr.h"
#include "lv_vdb.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef struct
{
area_t area;
uint8_t joined;
}lv_join_t;
/**********************
* STATIC PROTOTYPES
**********************/
static void lv_refr_task(void * param);
static void lv_refr_join_area(void);
static void lv_refr_areas(void);
#if LV_VDB_SIZE == 0
static void lv_refr_area_no_vdb(const area_t * area_p);
#else
static void lv_refr_area_with_vdb(const area_t * area_p);
static void lv_refr_area_part_vdb(const area_t * area_p);
#endif
static lv_obj_t * lv_refr_get_top_obj(const area_t * area_p, lv_obj_t * obj);
static void lv_refr_make(lv_obj_t * top_p, const area_t * mask_p);
static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p);
/**********************
* STATIC VARIABLES
**********************/
lv_join_t inv_buf[LV_INV_FIFO_SIZE];
uint16_t inv_buf_p;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Initialize the screen refresh subsystem
*/
void lv_refr_init(void)
{
inv_buf_p = 0;
memset(inv_buf, 0, sizeof(inv_buf));
ptask_t* task;
task = ptask_create(lv_refr_task, LV_REFR_PERIOD, PTASK_PRIO_MID, NULL);
dm_assert(task);
}
/**
* Invalidate an area
* @param area_p pointer to area which should be invalidated
*/
void lv_inv_area(const area_t * area_p)
{
area_t scr_area;
scr_area.x1 = 0;
scr_area.y1 = 0;
scr_area.x2 = LV_HOR_RES - 1;
scr_area.y2 = LV_VER_RES - 1;
area_t com_area;
bool suc;
suc = area_union(&com_area, area_p, &scr_area);
/*The area is truncated to the screen*/
if(suc != false)
{
#if LV_DOWNSCALE == 2
/*Rounding*/
com_area.x1 = com_area.x1 & (~0x1);
com_area.y1 = com_area.y1 & (~0x1);
com_area.x2 = com_area.x2 | 0x1;
com_area.y2 = com_area.y2 | 0x1;
#endif
/*Save only if this area is not in one of the saved areas*/
uint16_t i;
for(i = 0; i < inv_buf_p; i++) {
if(area_is_in(&com_area, &inv_buf[i].area) != false) return;
}
/*Save the area*/
if(inv_buf_p < LV_INV_FIFO_SIZE) {
area_cpy(&inv_buf[inv_buf_p].area,&com_area);
} else {/*If no place for the area add the screen*/
inv_buf_p = 0;
area_cpy(&inv_buf[inv_buf_p].area,&scr_area);
}
inv_buf_p ++;
}
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Called periodically to handle the refreshing
* @param param unused
*/
static void lv_refr_task(void * param)
{
lv_refr_join_area();
lv_refr_areas();
memset(inv_buf, 0, sizeof(inv_buf));
inv_buf_p = 0;
}
/**
* Join the areas which has got common parts
*/
static void lv_refr_join_area(void)
{
uint32_t join_from;
uint32_t join_in;
area_t joined_area;
for(join_in = 0; join_in < inv_buf_p; join_in++) {
if(inv_buf[join_in].joined != 0) continue;
/*Check all areas to join them in 'join_in'*/
for(join_from = 0; join_from < inv_buf_p; join_from++) {
/*Handle only unjoined areas and ignore itself*/
if(inv_buf[join_from].joined != 0 || join_in == join_from) {
continue;
}
/*Check if the areas are on each other*/
if(area_is_on(&inv_buf[join_in].area,
&inv_buf[join_from].area) == false)
{
continue;
}
area_join(&joined_area, &inv_buf[join_in].area,
&inv_buf[join_from].area);
/*Join two area only if the joined area size is smaller*/
if(area_get_size(&joined_area) <
(area_get_size(&inv_buf[join_in].area) + area_get_size(&inv_buf[join_from].area))) {
area_cpy(&inv_buf[join_in].area, &joined_area);
/*Mark 'join_form' is joined into 'join_in'*/
inv_buf[join_from].joined = 1;
}
}
}
}
/**
* Refresh the joined areas
*/
static void lv_refr_areas(void)
{
uint32_t i;
for(i = 0; i < inv_buf_p; i++) {
/*Refresh the unjoined areas*/
if(inv_buf[i].joined == 0) {
/*If there is no VDB do simple drawing*/
#if LV_VDB_SIZE == 0
lv_refr_area_no_vdb(&inv_buf[i].area);
#else
/*If VDB is used...*/
lv_refr_area_with_vdb(&inv_buf[i].area);
#endif
}
}
}
#if LV_VDB_SIZE == 0
/**
* Refresh an area if there is no Virtual Display Buffer
* @param area_p pointer to an area to refresh
*/
static void lv_refr_area_no_vdb(const area_t * area_p)
{
lv_obj_t * top_p;
/*Get top object which is not covered by others*/
top_p = lv_refr_get_top_obj(area_p, lv_scr_act());
/*Do the refreshing*/
lv_refr_make(top_p, area_p);
}
#else
/**
* Refresh an area if there is Virtual Display Buffer
* @param area_p pointer to an area to refresh
*/
static void lv_refr_area_with_vdb(const area_t * area_p)
{
lv_vdb_t * vdb_p = lv_vdb_get();
/*Always use the full row*/
vdb_p->vdb_area.x1 = area_p->x1;
vdb_p->vdb_area.y1 = area_p->y1;
vdb_p->vdb_area.x2 = area_p->x2;
/*Calculate the max row num*/
uint32_t max_row = (uint32_t) LV_VDB_SIZE / (vdb_p->vdb_area.x2 - vdb_p->vdb_area.x1 + 1);
if(max_row > area_get_height(area_p)) max_row = area_get_height(area_p);
/*Round the row number with downscale*/
#if LV_DOWNSCALE == 2
max_row &= (~0x1);
#endif
/*Refresh all rows*/
cord_t row = area_p->y1;
for(row = area_p->y1; row + max_row - 1 <= area_p->y2; row += max_row) {
/*Calc. the next y coordinates of VDB*/
vdb_p->vdb_area.y1 = row;
vdb_p->vdb_area.y2 = row + max_row - 1;
lv_refr_area_part_vdb(area_p);
}
/*If the last y coordinates are not handled yet ...*/
if(area_p->y2 != vdb_p->vdb_area.y2) {
/*Calc. the next y coordinates of VDB*/
vdb_p->vdb_area.y1 = row;
vdb_p->vdb_area.y2 = area_p->y2;
/*Refresh this part too*/
lv_refr_area_part_vdb(area_p);
}
}
/**
* Refresh a part of an area which is on the actual Virtual Display Buffer
* @param area_p pointer to an area to refresh
*/
static void lv_refr_area_part_vdb(const area_t * area_p)
{
lv_vdb_t * vdb_p = lv_vdb_get();
lv_obj_t * top_p;
/*Get the new mask from the original area and the act. VDB
It will be a part of 'area_p'*/
area_t start_mask;
area_union(&start_mask, area_p, &vdb_p->vdb_area);
/*Get the most top object which is not covered by others*/
top_p = lv_refr_get_top_obj(&start_mask, lv_scr_act());
/*Do the refreshing from the top object*/
lv_refr_make(top_p, &start_mask);
/*Flush the content of the VDB*/
lv_vdb_flush();
}
#endif /*LV_VDB_SIZE == 0*/
/**
* Search the most top object which fully covers an area
* @param area_p pointer to an area
* @param obj the first object to start the searching (typically a screen)
* @return
*/
static lv_obj_t * lv_refr_get_top_obj(const area_t * area_p, lv_obj_t * obj)
{
lv_obj_t * i;
lv_obj_t * found_p = NULL;
/*If this object is fully cover the draw area check the children too */
if(area_is_in(area_p, &obj->cords) && obj->hidden == 0)
{
LL_READ(obj->child_ll, i) {
found_p = lv_refr_get_top_obj(area_p, i);
/*If a children is ok then break*/
if(found_p != NULL) {
break;
}
}
/*If no better children check this object*/
if(found_p == NULL) {
if(obj->opa == OPA_COVER &&
LV_SA(obj, lv_objs_t)->transp == 0 &&
obj->design_f(obj, area_p, LV_DESIGN_COVER_CHK) != false) {
found_p = obj;
}
}
}
return found_p;
}
/**
* Make the refreshing from an object. Draw all its children and the yungers too.
* @param top_p pointer to an objects. Start the drawing from it.
* @param mask_p pointer to an area, the objects will be drawn only here
*/
static void lv_refr_make(lv_obj_t * top_p, const area_t * mask_p)
{
/* Normally always will be a top_obj (at least the screen)
* but in special cases (e.g. if the screen has alpha) it won't.
* In this case use the screen directly */
if(top_p == NULL) top_p = lv_scr_act();
/*Refresh the top object and its children*/
lv_refr_obj(top_p, mask_p);
/*Draw the 'younger' sibling objects because they can be on top_obj */
lv_obj_t * par;
lv_obj_t * i;
lv_obj_t * border_p = top_p;
par = lv_obj_get_parent(top_p);
/*Do until not reach the screen*/
while(par != NULL) {
/*object before border_p has to be redrawn*/
i = ll_get_prev(&(par->child_ll), border_p);
while(i != NULL) {
/*Refresh the objects*/
lv_refr_obj(i, mask_p);
i = ll_get_prev(&(par->child_ll), i);
}
/*The new border will be there last parents,
*so the 'younger' brothers of parent will be refreshed*/
border_p = par;
/*Go a level deeper*/
par = lv_obj_get_parent(par);
}
/*Call the post draw design function of the parents of the to object*/
par = lv_obj_get_parent(top_p);
while(par != NULL) {
par->design_f(par, mask_p, LV_DESIGN_DRAW_POST);
par = lv_obj_get_parent(par);
}
}
/**
* Refresh an object an all of its children. (Called recursively)
* @param obj pointer to an object to refresh
* @param mask_ori_p pointer to an area, the objects will be drawn only here
*/
static void lv_refr_obj(lv_obj_t * obj, const area_t * mask_ori_p)
{
/*Do not refresh hidden objects*/
if(obj->hidden != 0) return;
bool union_ok; /* Store the return value of area_union */
/* Truncate the original mask to the coordinates of the parent
* because the parent and its children are visible only here */
area_t obj_mask;
area_t obj_ext_mask;
area_t obj_area;
cord_t ext_size = obj->ext_size;
lv_obj_get_cords(obj, &obj_area);
obj_area.x1 -= ext_size;
obj_area.y1 -= ext_size;
obj_area.x2 += ext_size;
obj_area.y2 += ext_size;
union_ok = area_union(&obj_ext_mask, mask_ori_p, &obj_area);
/*Draw the parent and its children only if they ore on 'mask_parent'*/
if(union_ok != false) {
/* Redraw the object */
if(obj->opa != OPA_TRANSP && LV_SA(obj, lv_objs_t)->transp == 0) {
obj->design_f(obj, &obj_ext_mask, LV_DESIGN_DRAW_MAIN);
/* tick_wait_ms(100); */ /*DEBUG: Wait after every object draw to see the order of drawing*/
}
/*Create a new 'obj_mask' without 'ext_size' because the children can't be visible there*/
lv_obj_get_cords(obj, &obj_area);
union_ok = area_union(&obj_mask, mask_ori_p, &obj_area);
if(union_ok != false) {
area_t mask_child; /*Mask from obj and its child*/
lv_obj_t * child_p;
area_t child_area;
LL_READ_BACK(obj->child_ll, child_p)
{
lv_obj_get_cords(child_p, &child_area);
ext_size = child_p->ext_size;
child_area.x1 -= ext_size;
child_area.y1 -= ext_size;
child_area.x2 += ext_size;
child_area.y2 += ext_size;
/* Get the union (common parts) of original mask (from obj)
* and its child */
union_ok = area_union(&mask_child, &obj_mask, &child_area);
/*If the parent and the child has common area then refresh the child */
if(union_ok) {
/*Refresh the next children*/
lv_refr_obj(child_p, &mask_child);
}
}
}
/* If all the children are redrawn make 'post draw' design */
if(obj->opa != OPA_TRANSP && LV_SA(obj, lv_objs_t)->transp == 0) {
obj->design_f(obj, &obj_ext_mask, LV_DESIGN_DRAW_POST);
}
}
}

View File

@@ -1,110 +0,0 @@
/**
* @file lv_vdb.c
*
*/
#include "lv_conf.h"
#if LV_VDB_SIZE != 0
#include "hal/disp/disp.h"
#include <stddef.h>
#include "lv_vdb.h"
/*********************
* INCLUDES
*********************/
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
static lv_vdb_t vdb;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Get the vdb variable
* @return pointer to the vdb variable
*/
lv_vdb_t * lv_vdb_get(void)
{
return &vdb;
}
/**
* Flush the content of the vdb
*/
void lv_vdb_flush(void)
{
#if LV_ANTIALIAS == 0
disp_area(DISP_ID_ALL, vdb.vdb_area.x1 , vdb.vdb_area.y1, vdb.vdb_area.x2, vdb.vdb_area.y2);
disp_map(DISP_ID_ALL, vdb.buf);
#else
/* Get the average of 2x2 pixels and put the result back to the VDB
* The reading goes much faster then the write back
* so useful data won't be overwritten
* Example:
* -----------------------------
* in1_buf |2,2|6,8| 3,7
* in2_buf |4,4|7,7| 1,2
* --------- ==>
* in1_buf |1,1|1,3|
* in2_buf |1,1|1,3|
* */
cord_t x;
cord_t y;
cord_t w = area_get_width(&vdb.vdb_area);
color_t * in1_buf = vdb.buf; /*Pointer to the first row*/
color_t * in2_buf = vdb.buf + w; /*Pointer to the second row*/
color_t * out_buf = vdb.buf; /*Store the result here*/
for(y = vdb.vdb_area.y1; y < vdb.vdb_area.y2; y += 2) {
for(x = vdb.vdb_area.x1; x < vdb.vdb_area.x2; x += 2) {
/*Get the average of 2x2 red*/
out_buf->red = (in1_buf->red + (in1_buf + 1)->red +
in2_buf->red + (in2_buf+ 1)->red) >> 2;
/*Get the average of 2x2 green*/
out_buf->green = (in1_buf->green + (in1_buf + 1)->green +
in2_buf->green + (in2_buf + 1)->green) >> 2;
/*Get the average of 2x2 blue*/
out_buf->blue = (in1_buf->blue + (in1_buf + 1)->blue +
in2_buf->blue + (in2_buf + 1)->blue) >> 2;
in1_buf+=2; /*Skip the next pixel because it is already used above*/
in2_buf+=2;
out_buf++;
}
/*2 row is ready so go the next 2*/
in1_buf += w; /*Skip the next row because it is processed from in2_buf*/
in2_buf += w;
}
/* Now the full the VDB is filtered and the result is stored in the first quarter of it
* Write out the filtered map to the display*/
disp_area(DISP_ID_ALL, vdb.vdb_area.x1 >> 1, vdb.vdb_area.y1 >> 1, vdb.vdb_area.x2 >> 1, vdb.vdb_area.y2 >> 1);
disp_map(DISP_ID_ALL, vdb.buf);
#endif
}
/**********************
* STATIC FUNCTIONS
**********************/
#endif

View File

@@ -1,57 +0,0 @@
/**
* @file lv_vdb.h
*
*/
#ifndef LV_VDB_H
#define LV_VDB_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if LV_VDB_SIZE != 0
#include "misc/others/color.h"
#include <lvgl/lv_misc/area.h>
#include "../lv_misc/font.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef struct
{
area_t vdb_area;
color_t buf[LV_VDB_SIZE];
}lv_vdb_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Get the vdb variable
* @return pointer to the vdb variable
*/
lv_vdb_t * lv_vdb_get(void);
/**
* Flush the content of the vdb
*/
void lv_vdb_flush(void);
/**********************
* MACROS
**********************/
#endif
#endif

View File

@@ -1,525 +0,0 @@
/**
* @file lv_btn.c
*
*/
/*********************
* INCLUDES
*********************/
#include <lvgl/lv_misc/area.h>
#include <lvgl/lv_obj/lv_obj.h>
#include <misc/others/color.h>
#include <stdbool.h>
#if USE_LV_BTN != 0
#include <string.h>
#include "lv_btn.h"
#include "../lv_draw/lv_draw.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool lv_btn_design(lv_obj_t * btn, const area_t * mask, lv_design_mode_t mode);
static void lv_btn_style_load(lv_obj_t * btn, lv_rects_t * new_rects);
static void lv_btns_init(void);
/**********************
* STATIC VARIABLES
**********************/
static lv_btns_t lv_btns_def;
static lv_btns_t lv_btns_transp;
static lv_btns_t lv_btns_border;
static lv_design_f_t ancestor_design_f;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Create a button objects
* @param par pointer to an object, it will be the parent of the new button
* @param copy pointer to a button object, if not NULL then the new object will be copied from it
* @return pointer to the created button
*/
lv_obj_t * lv_btn_create(lv_obj_t * par, lv_obj_t * copy)
{
lv_obj_t * new_btn;
new_btn = lv_rect_create(par, copy);
dm_assert(new_btn);
/*Allocate the extended data*/
lv_btn_ext_t * ext = lv_obj_alloc_ext(new_btn, sizeof(lv_btn_ext_t));
dm_assert(ext);
ext->state = LV_BTN_STATE_REL;
ext->pr_action = NULL;
ext->rel_action = NULL;
ext->lpr_action = NULL;
ext->lpr_rep_action = NULL;
ext->lpr_exec = 0;
ext->tgl = 0;
if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_f(new_btn);
lv_obj_set_signal_f(new_btn, lv_btn_signal);
lv_obj_set_design_f(new_btn, lv_btn_design);
/*If no copy do the basic initialization*/
if(copy == NULL) {
lv_rect_set_layout(new_btn, LV_RECT_LAYOUT_CENTER);
lv_obj_set_style(new_btn, lv_btns_get(LV_BTNS_DEF, NULL));
}
/*Copy 'copy'*/
else {
lv_btn_ext_t * copy_ext = lv_obj_get_ext(copy);
ext->state = copy_ext->state;
ext->pr_action = copy_ext->pr_action;
ext->rel_action = copy_ext->rel_action;
ext->lpr_action = copy_ext->lpr_action;
ext->lpr_rep_action = copy_ext->lpr_action;
ext->tgl = copy_ext->tgl;
/*Refresh the style with new signal function*/
lv_obj_refr_style(new_btn);
}
return new_btn;
}
/**
* Signal function of the button
* @param btn pointer to a button object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void * param)
{
bool valid;
/* Include the ancient signal function */
valid = lv_rect_signal(btn, sign, param);
/* The object can be deleted so check its validity and then
* make the object specific signal handling */
if(valid != false) {
lv_btn_state_t state = lv_btn_get_state(btn);
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
bool tgl = lv_btn_get_tgl(btn);
switch (sign) {
case LV_SIGNAL_PRESSED:
/*Refresh the state*/
if(ext->state == LV_BTN_STATE_REL) {
lv_btn_set_state(btn, LV_BTN_STATE_PR);
} else if(ext->state == LV_BTN_STATE_TGL_REL) {
lv_btn_set_state(btn, LV_BTN_STATE_TGL_PR);
}
ext->lpr_exec = 0;
/*Call the press action, here 'param' is the caller dispi*/
if(ext->pr_action != NULL && state != LV_BTN_STATE_INA) {
valid = ext->pr_action(btn, param);
}
break;
case LV_SIGNAL_PRESS_LOST:
/*Refresh the state*/
if(ext->state == LV_BTN_STATE_PR) lv_btn_set_state(btn, LV_BTN_STATE_REL);
else if(ext->state == LV_BTN_STATE_TGL_PR) lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
lv_obj_inv(btn);
break;
case LV_SIGNAL_PRESSING:
/*When the button begins to drag revert pressed states to released*/
if(lv_dispi_is_dragging(param) != false) {
if(ext->state == LV_BTN_STATE_PR) lv_btn_set_state(btn, LV_BTN_STATE_REL);
else if(ext->state == LV_BTN_STATE_TGL_PR) lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
}
lv_obj_inv(btn);
break;
case LV_SIGNAL_RELEASED:
/*If not dragged and it was not long press action then
*change state and run the action*/
if(lv_dispi_is_dragging(param) == false && ext->lpr_exec == 0) {
if(ext->state == LV_BTN_STATE_PR && tgl == false) {
lv_btn_set_state(btn, LV_BTN_STATE_REL);
} else if(ext->state == LV_BTN_STATE_TGL_PR && tgl == false) {
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
} else if(ext->state == LV_BTN_STATE_PR && tgl == true) {
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
} else if(ext->state == LV_BTN_STATE_TGL_PR && tgl == true) {
lv_btn_set_state(btn, LV_BTN_STATE_REL);
}
if(ext->rel_action != NULL && state != LV_BTN_STATE_INA) {
valid = ext->rel_action(btn, param);
}
} else { /*If dragged change back the state*/
if(ext->state == LV_BTN_STATE_PR) {
lv_btn_set_state(btn, LV_BTN_STATE_REL);
} else if(ext->state == LV_BTN_STATE_TGL_PR) {
lv_btn_set_state(btn, LV_BTN_STATE_TGL_REL);
}
lv_obj_inv(btn);
}
break;
case LV_SIGNAL_LONG_PRESS:
/*Call the long press action, here 'param' is the caller dispi*/
if(ext->lpr_action != NULL && state != LV_BTN_STATE_INA) {
ext->lpr_exec = 1;
valid = ext->lpr_action(btn, param);
}
break;
case LV_SIGNAL_LONG_PRESS_REP:
/*Call the release action, here 'param' is the caller dispi*/
if(ext->lpr_rep_action != NULL && state != LV_BTN_STATE_INA) {
valid = ext->lpr_rep_action(btn, param);
}
break;
default:
/*Do nothing*/
break;
}
}
return valid;
}
/*=====================
* Setter functions
*====================*/
/**
* Enable the toggled states
* @param btn pointer to a button object
* @param tgl true: enable toggled states, false: disable
*/
void lv_btn_set_tgl(lv_obj_t * btn, bool tgl)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
ext->tgl = tgl != false ? 1 : 0;
}
/**
* Set the state of the button
* @param btn pointer to a button object
* @param state the new state of the button (from lv_btn_state_t enum)
*/
void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
if(ext->state != state) {
ext->state = state;
lv_obj_inv(btn);
}
}
/**
* Set a function to call when the button is pressed
* @param btn pointer to a button object
* @param pr_action pointer to function
*/
void lv_btn_set_pr_action(lv_obj_t * btn, lv_action_t pr_action)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
ext->pr_action = pr_action;
}
/**
* Set a function to call when the button is released
* @param btn pointer to a button object
* @param rel_action pointer to functionREL
*/
void lv_btn_set_rel_action(lv_obj_t * btn, lv_action_t rel_action)
{
lv_btn_ext_t * btn_p = lv_obj_get_ext(btn);
btn_p->rel_action = rel_action;
}
/**
* Set a function to call when the button is long pressed
* @param btn pointer to a button object
* @param lpr_action pointer to function
*/
void lv_btn_set_lpr_action(lv_obj_t * btn, lv_action_t lpr_action)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
ext->lpr_action = lpr_action;
}
/**
* Set a function to called periodically after long press.
* @param btn pointer to a button object
* @param lpr_rep_action pointer to function
*/
void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_action_t lpr_rep_action)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
ext->lpr_rep_action = lpr_rep_action;
}
/*=====================
* Getter functions
*====================*/
/**
* Get the current state of the button
* @param btn pointer to a button object
* @return the state of the button (from lv_btn_state_t enum)
*/
lv_btn_state_t lv_btn_get_state(lv_obj_t * btn)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
return ext->state;
}
/**
* Get the toggle enable attribute of the button
* @param btn pointer to a button object
* @return ture: toggle enabled, false: disabled
*/
bool lv_btn_get_tgl(lv_obj_t * btn)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
return ext->tgl != 0 ? true : false;
}
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_btns_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_btns_t style
*/
lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy)
{
static bool style_inited = false;
/*Make the style initialization if it is not done yet*/
if(style_inited == false) {
lv_btns_init();
style_inited = true;
}
lv_btns_t * style_p;
switch(style) {
case LV_BTNS_DEF:
style_p = &lv_btns_def;
break;
case LV_BTNS_TRANSP:
style_p = &lv_btns_transp;
break;
case LV_BTNS_BORDER:
style_p = &lv_btns_border;
break;
default:
style_p = &lv_btns_def;
}
if(copy != NULL) {
if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_btns_t));
else memcpy(copy, &lv_btns_def, sizeof(lv_btns_t));
}
return style_p;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Handle the drawing related tasks of the buttons
* @param btn pointer to a button object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_btn_design(lv_obj_t * btn, const area_t * mask, lv_design_mode_t mode)
{
/* Because of the radius it is not sure the area is covered*/
if(mode == LV_DESIGN_COVER_CHK) {
/*Temporally set a rectangle style for the button to look like as rectangle*/
lv_rects_t rects_tmp;
lv_btns_t * btns_tmp = lv_obj_get_style(btn);
bool ret = false;
lv_btn_style_load(btn, &rects_tmp);
if(rects_tmp.objs.transp == 0) {
btn->style_p = &rects_tmp;
ret = ancestor_design_f(btn, mask, mode); /*Draw the rectangle*/
btn->style_p = btns_tmp; /*Reload the original button style*/
}
return ret;
} else if(mode == LV_DESIGN_DRAW_MAIN || mode == LV_DESIGN_DRAW_POST) {
area_t area;
lv_obj_get_cords(btn, &area);
/*Temporally set a rectangle style for the button to draw it as rectangle*/
lv_rects_t rects_tmp;
lv_btns_t * btns_tmp = lv_obj_get_style(btn);
lv_btn_style_load(btn, &rects_tmp);
if(rects_tmp.objs.transp == 0) {
btn->style_p = &rects_tmp;
ancestor_design_f(btn, mask, mode); /*Draw the rectangle*/
btn->style_p = btns_tmp; /*Reload the original button style*/
}
}
return true;
}
/**
* Crate a rectangle style according to the state of the button
* @param btn pointer to a button object
* @param new_rects load the style here (pointer to a rectangle style)
*/
static void lv_btn_style_load(lv_obj_t * btn, lv_rects_t * new_rects)
{
lv_btn_state_t state = lv_btn_get_state(btn);
lv_btns_t * style = lv_obj_get_style(btn);
/*Load the style*/
memcpy(new_rects, &style->rects, sizeof(lv_rects_t));
new_rects->objs.color = style->mcolor[state];
new_rects->gcolor = style->gcolor[state];
new_rects->bcolor = style->bcolor[state];
new_rects->lcolor = style->lcolor[state];
new_rects->empty = style->flags[state].empty;
new_rects->objs.transp = style->flags[state].transp;
if(style->flags[state].light_en != 0) new_rects->light = style->rects.light;
else new_rects->light = 0;
}
/**
* Initialize the button styles
*/
static void lv_btns_init(void)
{
/*Default style*/
lv_btns_def.mcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x60, 0x88, 0xb0);
lv_btns_def.gcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x20, 0x30, 0x40);
lv_btns_def.bcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0xff, 0xff, 0xff);
lv_btns_def.lcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0x30, 0x40, 0x50);
lv_btns_def.flags[LV_BTN_STATE_REL].light_en = 0;
lv_btns_def.flags[LV_BTN_STATE_REL].transp = 0;
lv_btns_def.flags[LV_BTN_STATE_REL].empty = 0;
lv_btns_def.mcolor[LV_BTN_STATE_PR] =COLOR_MAKE(0x50, 0x68, 0x80);
lv_btns_def.gcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x18, 0x20, 0x28);
lv_btns_def.bcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x60, 0x80, 0xa0);
lv_btns_def.lcolor[LV_BTN_STATE_PR] = COLOR_MAKE(0x30, 0x40, 0x50);
lv_btns_def.flags[LV_BTN_STATE_PR].light_en = 0;
lv_btns_def.flags[LV_BTN_STATE_PR].transp = 0;
lv_btns_def.flags[LV_BTN_STATE_PR].empty = 0;
lv_btns_def.mcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x40, 0x60, 0x80);
lv_btns_def.gcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x10, 0x18, 0x20);
lv_btns_def.bcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x20, 0x30, 0x40);
lv_btns_def.lcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x30, 0x40, 0x50);
lv_btns_def.flags[LV_BTN_STATE_TGL_REL].light_en = 1;
lv_btns_def.flags[LV_BTN_STATE_TGL_REL].transp = 0;
lv_btns_def.flags[LV_BTN_STATE_TGL_REL].empty = 0;
lv_btns_def.mcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x60, 0x80, 0xa0);
lv_btns_def.gcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x20, 0x30, 0x40);
lv_btns_def.bcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x20, 0x30, 0x40);
lv_btns_def.lcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x30, 0x40, 0x50);
lv_btns_def.flags[LV_BTN_STATE_TGL_PR].light_en = 1;
lv_btns_def.flags[LV_BTN_STATE_TGL_PR].transp = 0;
lv_btns_def.flags[LV_BTN_STATE_TGL_PR].empty = 0;
lv_btns_def.mcolor[LV_BTN_STATE_INA] = COLOR_SILVER;
lv_btns_def.gcolor[LV_BTN_STATE_INA] = COLOR_GRAY;
lv_btns_def.bcolor[LV_BTN_STATE_INA] = COLOR_WHITE;
lv_btns_def.lcolor[LV_BTN_STATE_INA] = COLOR_MAKE(0x30, 0x40, 0x50);
lv_btns_def.flags[LV_BTN_STATE_INA].light_en = 0;
lv_btns_def.flags[LV_BTN_STATE_INA].transp= 0;
lv_btns_def.flags[LV_BTN_STATE_INA].empty = 0;
lv_btns_def.rects.objs.color = lv_btns_def.mcolor[LV_BTN_STATE_REL];
lv_btns_def.rects.gcolor = lv_btns_def.gcolor[LV_BTN_STATE_REL];
lv_btns_def.rects.bcolor = lv_btns_def.bcolor[LV_BTN_STATE_REL];
lv_btns_def.rects.objs.transp = 0;
lv_btns_def.rects.empty = 0;
lv_btns_def.rects.light = 6 * LV_DOWNSCALE;
lv_btns_def.rects.bwidth = 2 * LV_DOWNSCALE;
lv_btns_def.rects.bopa = 70;
lv_btns_def.rects.empty = 0;
lv_btns_def.rects.round = 4 * LV_DOWNSCALE;
lv_btns_def.rects.hpad = 10 * LV_DOWNSCALE;
lv_btns_def.rects.vpad = 15 * LV_DOWNSCALE;
lv_btns_def.rects.opad = 10 * LV_DOWNSCALE;
/*Transparent style*/
memcpy(&lv_btns_transp, &lv_btns_def, sizeof(lv_btns_t));
lv_btns_transp.rects.bwidth = 0;
lv_btns_transp.flags[LV_BTN_STATE_REL].transp = 1;
lv_btns_transp.flags[LV_BTN_STATE_REL].empty = 1;
lv_btns_transp.flags[LV_BTN_STATE_REL].light_en = 0;
lv_btns_transp.flags[LV_BTN_STATE_PR].transp = 1;
lv_btns_transp.flags[LV_BTN_STATE_PR].empty = 1;
lv_btns_transp.flags[LV_BTN_STATE_PR].light_en = 0;
lv_btns_transp.flags[LV_BTN_STATE_TGL_REL].transp = 1;
lv_btns_transp.flags[LV_BTN_STATE_TGL_REL].empty = 1;
lv_btns_transp.flags[LV_BTN_STATE_TGL_REL].light_en = 0;
lv_btns_transp.flags[LV_BTN_STATE_TGL_PR].transp = 1;
lv_btns_transp.flags[LV_BTN_STATE_TGL_PR].empty = 1;
lv_btns_transp.flags[LV_BTN_STATE_TGL_PR].light_en = 0;
lv_btns_transp.flags[LV_BTN_STATE_INA].transp = 1;
lv_btns_transp.flags[LV_BTN_STATE_INA].empty = 1;
lv_btns_transp.flags[LV_BTN_STATE_INA].light_en = 0;
/*Border style*/
memcpy(&lv_btns_border, &lv_btns_def, sizeof(lv_btns_t));
lv_btns_border.bcolor[LV_BTN_STATE_REL] = COLOR_BLACK;
lv_btns_border.bcolor[LV_BTN_STATE_PR] = COLOR_BLACK;
lv_btns_border.bcolor[LV_BTN_STATE_TGL_REL] = COLOR_BLACK;
lv_btns_border.bcolor[LV_BTN_STATE_TGL_PR] = COLOR_BLACK;
lv_btns_border.bcolor[LV_BTN_STATE_INA] = COLOR_GRAY;
lv_btns_border.flags[LV_BTN_STATE_REL].empty = 1;
lv_btns_border.flags[LV_BTN_STATE_PR].empty = 0;
lv_btns_border.flags[LV_BTN_STATE_TGL_REL].empty = 0;
lv_btns_border.flags[LV_BTN_STATE_TGL_PR].empty = 0;
lv_btns_border.flags[LV_BTN_STATE_INA].empty = 1;
lv_btns_border.flags[LV_BTN_STATE_REL].light_en = 0;
lv_btns_border.flags[LV_BTN_STATE_PR].light_en = 0;
lv_btns_border.flags[LV_BTN_STATE_TGL_REL].light_en = 0;
lv_btns_border.flags[LV_BTN_STATE_TGL_PR].light_en = 0;
lv_btns_border.flags[LV_BTN_STATE_INA].light_en = 0;
lv_btns_border.rects.bwidth = 1 * LV_DOWNSCALE;
lv_btns_border.rects.bopa = 50;
lv_btns_border.rects.round = 4 * LV_DOWNSCALE;
lv_btns_border.rects.hpad = 10 * LV_DOWNSCALE;
lv_btns_border.rects.vpad = 10 * LV_DOWNSCALE;
}
#endif

View File

@@ -1,175 +0,0 @@
/**
* @file lv_btn.h
*
*/
#ifndef LV_BTN_H
#define LV_BTN_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_BTN != 0
/*Testing of dependencies*/
#if USE_LV_RECT == 0
#error "lv_btn: lv_rect is required. Enable it in lv_conf.h (USE_LV_RECT 1) "
#endif
#include "lv_rect.h"
#include "../lv_obj/lv_dispi.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef enum
{
LV_BTN_STATE_PR,
LV_BTN_STATE_REL,
LV_BTN_STATE_TGL_PR,
LV_BTN_STATE_TGL_REL,
LV_BTN_STATE_INA,
LV_BTN_STATE_NUM,
}lv_btn_state_t;
/*Data of button*/
typedef struct
{
lv_rect_ext_t rect_ext; /*Ext. of ancestor*/
/*New data for this type */
lv_action_t pr_action;
lv_action_t rel_action;
lv_action_t lpr_action;
lv_action_t lpr_rep_action;
lv_btn_state_t state;
uint8_t tgl :1; /*1: Toggle enabled*/
uint8_t lpr_exec :1; /*1: long press action executed (Not for user)*/
}lv_btn_ext_t;
/*Bits of 'flag' in 'lv_btns_t'*/
typedef struct
{
uint8_t light_en :1;
uint8_t transp :1;
uint8_t empty :1;
}lv_btns_bits_t;
/*Style of button*/
typedef struct
{
lv_rects_t rects; /*Style of ancestor*/
/*New style element for this type */
color_t mcolor[LV_BTN_STATE_NUM];
color_t gcolor[LV_BTN_STATE_NUM];
color_t bcolor[LV_BTN_STATE_NUM];
color_t lcolor[LV_BTN_STATE_NUM];
lv_btns_bits_t flags[LV_BTN_STATE_NUM];
}lv_btns_t;
/*Built-in styles of button*/
typedef enum
{
LV_BTNS_DEF,
LV_BTNS_TRANSP,
LV_BTNS_BORDER,
}lv_btns_builtin_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Create a button objects
* @param par pointer to an object, it will be the parent of the new button
* @param copy pointer to a button object, if not NULL then the new object will be copied from it
* @return pointer to the created button
*/
lv_obj_t * lv_btn_create(lv_obj_t * par, lv_obj_t * copy);
/**
* Signal function of the button
* @param btn pointer to a button object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void * param);
/**
* Enable the toggled states
* @param btn pointer to a button object
* @param tgl true: enable toggled states, false: disable
*/
void lv_btn_set_tgl(lv_obj_t * btn, bool tgl);
/**
* Set the state of the button
* @param btn pointer to a button object
* @param state the new state of the button (from lv_btn_state_t enum)
*/
void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state);
/**
* Set a function to call when the button is pressed
* @param btn pointer to a button object
* @param pr_action pointer to function
*/
void lv_btn_set_pr_action(lv_obj_t * btn, lv_action_t pr_action);
/**
* Set a function to call when the button is released
* @param btn pointer to a button object
* @param rel_action pointer to functionREL
*/
void lv_btn_set_rel_action(lv_obj_t * btn, lv_action_t rel_action);
/**
* Set a function to call when the button is long pressed
* @param btn pointer to a button object
* @param lpr_action pointer to function
*/
void lv_btn_set_lpr_action(lv_obj_t * btn, lv_action_t lpr_action);
/**
* Set a function to called periodically after long press.
* @param btn pointer to a button object
* @param lpr_rep_action pointer to function
*/
void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_action_t lpr_rep_action);
/**
* Get the current state of the button
* @param btn pointer to a button object
* @return the state of the button (from lv_btn_state_t enum)
*/
lv_btn_state_t lv_btn_get_state(lv_obj_t * btn);
/**
* Get the toggle enable attribute of the button
* @param btn pointer to a button object
* @return ture: toggle enabled, false: disabled
*/
bool lv_btn_get_tgl(lv_obj_t * btn);
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_btns_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_btns_t style
*/
lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy);
/**********************
* MACROS
**********************/
#endif
#endif

View File

@@ -1,524 +0,0 @@
/**
* @file lv_btnm.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_BTNM != 0
#include "lv_btnm.h"
#include "../lv_draw/lv_draw.h"
#include "../lv_misc/text.h"
#include "../lv_obj/lv_refr.h"
/*********************
* DEFINES
*********************/
#define LV_BTNM_BTN_PR_INVALID 0xFFFF
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool lv_btnm_design(lv_obj_t * btnm, const area_t * mask, lv_design_mode_t mode);
static uint8_t lv_btnm_get_width_unit(const char * btn_str);
static uint16_t lv_btnm_get_btn_from_point(lv_obj_t * btnm, point_t * p);
static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map);
static void lv_btnms_init(void);
/**********************
* STATIC VARIABLES
**********************/
static lv_btnms_t lv_btnms_def;
static const char * lv_btnm_def_map[] = {"Btn1","Btn2", "Btn3","\n",
"\002Btn4","Btn5", ""};
static lv_design_f_t ancestor_design_f;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/*-----------------
* Create function
*-----------------*/
/**
* Create a button matrix objects
* @param par pointer to an object, it will be the parent of the new button matrix
* @param copy pointer to a button matrix object, if not NULL then the new object will be copied from it
* @return pointer to the created button matrix
*/
lv_obj_t * lv_btnm_create(lv_obj_t * par, lv_obj_t * copy)
{
/*Create the ancestor object*/
lv_obj_t * new_btnm = lv_rect_create(par, copy);
dm_assert(new_btnm);
/*Allocate the object type specific extended data*/
lv_btnm_ext_t * ext = lv_obj_alloc_ext(new_btnm, sizeof(lv_btnm_ext_t));
dm_assert(ext);
ext->btn_cnt = 0;
ext->btn_pr = LV_BTNM_BTN_PR_INVALID;
ext->btn_areas = NULL;
ext->cb = NULL;
ext->map_p = NULL;
if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_f(new_btnm);
lv_obj_set_signal_f(new_btnm, lv_btnm_signal);
lv_obj_set_design_f(new_btnm, lv_btnm_design);
/*Init the new button matrix object*/
if(copy == NULL) {
lv_obj_set_size(new_btnm, LV_HOR_RES / 2, LV_VER_RES / 2);
lv_obj_set_style(new_btnm, lv_btnms_get(LV_BTNMS_DEF, NULL));
lv_btnm_set_map(new_btnm, lv_btnm_def_map);
}
/*Copy an existing object*/
else {
lv_btnm_set_map(new_btnm, lv_btnm_get_map(copy));
}
return new_btnm;
}
/**
* Signal function of the button matrix
* @param btnm pointer to a button matrix object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return true: the object is still valid (not deleted), false: the object become invalid
*/
bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param)
{
bool valid;
/* Include the ancient signal function */
valid = lv_rect_signal(btnm, sign, param);
/* The object can be deleted so check its validity and then
* make the object specific signal handling */
if(valid != false) {
lv_btnm_ext_t * ext = lv_obj_get_ext(btnm);
uint16_t new_btn;
area_t btnm_area;
area_t btn_area;
point_t p;
switch(sign) {
case LV_SIGNAL_CLEANUP:
dm_free(ext->btn_areas);
break;
case LV_SIGNAL_STYLE_CHG:
case LV_SIGNAL_CORD_CHG:
lv_btnm_set_map(btnm, LV_EA(btnm, lv_btnm_ext_t)->map_p);
break;
case LV_SIGNAL_PRESSING:
/*Search the pressed area*/
lv_dispi_get_point(param, &p);
new_btn = lv_btnm_get_btn_from_point(btnm, &p);
/*Invalidate to old and the new areas*/;
lv_obj_get_cords(btnm, &btnm_area);
if(new_btn != ext->btn_pr) {
lv_dispi_reset_lpr(param);
if(ext->btn_pr != LV_BTNM_BTN_PR_INVALID) {
area_cpy(&btn_area, &ext->btn_areas[ext->btn_pr]);
btn_area.x1 += btnm_area.x1;
btn_area.y1 += btnm_area.y1;
btn_area.x2 += btnm_area.x1;
btn_area.y2 += btnm_area.y1;
lv_inv_area(&btn_area);
}
if(new_btn != LV_BTNM_BTN_PR_INVALID) {
area_cpy(&btn_area, &ext->btn_areas[new_btn]);
btn_area.x1 += btnm_area.x1;
btn_area.y1 += btnm_area.y1;
btn_area.x2 += btnm_area.x1;
btn_area.y2 += btnm_area.y1;
lv_inv_area(&btn_area);
}
}
ext->btn_pr = new_btn;
break;
case LV_SIGNAL_RELEASED:
case LV_SIGNAL_LONG_PRESS_REP:
if(ext->cb != NULL &&
ext->btn_pr != LV_BTNM_BTN_PR_INVALID) {
uint16_t txt_i = 0;
uint16_t btn_i = 0;
/*Search the next valid text in the map*/
while(btn_i != ext->btn_pr) {
btn_i ++;
txt_i ++;
if(strcmp(ext->map_p[txt_i], "\n") == 0) txt_i ++;
}
ext->cb(btnm, txt_i);
}
if(sign == LV_SIGNAL_RELEASED && ext->btn_pr != LV_BTNM_BTN_PR_INVALID) {
/*Invalidate to old area*/;
lv_obj_get_cords(btnm, &btnm_area);
area_cpy(&btn_area, &ext->btn_areas[ext->btn_pr]);
btn_area.x1 += btnm_area.x1;
btn_area.y1 += btnm_area.y1;
btn_area.x2 += btnm_area.x1;
btn_area.y2 += btnm_area.y1;
lv_inv_area(&btn_area);
ext->btn_pr = LV_BTNM_BTN_PR_INVALID;
}
break;
default:
break;
}
}
return valid;
}
/*=====================
* Setter functions
*====================*/
/**
* Set a new map. Buttons will be created/deleted according to the map.
* @param btnm pointer to a button matrix object
* @param map pointer a string array. The last string has to be: "".
* Use "\n" to begin a new line.
* Use octal numbers (e.g. "\003") to set the relative
* width of a button. (max. 9 -> \011)
* (e.g. const char * str[] = {"a", "b", "\n", "\004c", "d", ""}).
* The button do not copy the array so it can not be a local variable.
*/
void lv_btnm_set_map(lv_obj_t * btnm, const char ** map)
{
if(map == NULL) return;
LV_EA(btnm, lv_btnm_ext_t)->map_p = map;
/*Analyze the map and create the required number of buttons*/
lv_btnm_create_btns(btnm, map);
/*Set size and positions of the buttons*/
lv_btnms_t * btnms = lv_obj_get_style(btnm);
cord_t max_w = lv_obj_get_width(btnm) - 2 * btnms->rects.hpad;
cord_t max_h = lv_obj_get_height(btnm) - 2 * btnms->rects.vpad;
cord_t act_y = btnms->rects.vpad;
/*Count the lines to calculate button height*/
uint8_t line_cnt = 1;
uint8_t li;
for(li = 0; strlen(map[li]) != 0; li++) {
if(strcmp(map[li], "\n") == 0) line_cnt ++;
}
cord_t btn_h = max_h - ((line_cnt - 1) * btnms->rects.opad);
btn_h = btn_h / line_cnt;
/* Count the units and the buttons in a line
* (A button can be 1,2,3... unit wide)*/
uint16_t unit_cnt; /*Number of units in a row*/
uint16_t unit_act_cnt; /*Number of units currently put in a row*/
uint16_t btn_cnt; /*Number of buttons in a row*/
uint16_t i_tot = 0; /*Act. index in the str map*/
uint16_t btn_i = 0; /*Act. index of button areas*/
const char ** map_p_tmp = map;
lv_btnm_ext_t * ext = lv_obj_get_ext(btnm);
/*Count the units and the buttons in a line*/
while(1) {
unit_cnt = 0;
btn_cnt = 0;
/*Count the buttons in a line*/
while(strcmp(map_p_tmp[btn_cnt], "\n") != 0 &&
strlen(map_p_tmp[btn_cnt]) != 0) { /*Check a line*/
unit_cnt += lv_btnm_get_width_unit(map_p_tmp[btn_cnt]);
btn_cnt ++;
}
/*Only deal with the non empty lines*/
if(btn_cnt != 0) {
/*Calculate the width of all units*/
cord_t all_unit_w = max_w - ((btn_cnt-1) * btnms->rects.opad);
/*Set the button size and positions and set the texts*/
uint16_t i;
cord_t act_x = btnms->rects.hpad;
cord_t act_unit_w;
unit_act_cnt = 0;
for(i = 0; i < btn_cnt; i++) {
/* one_unit_w = all_unit_w / unit_cnt
* act_unit_w = one_unit_w * button_width
* do this two operation but the multiply first to divide a greater number */
act_unit_w = (all_unit_w * lv_btnm_get_width_unit(map_p_tmp[i])) / unit_cnt;
/*Always recalculate act_x because of rounding errors */
act_x = (unit_act_cnt * all_unit_w) / unit_cnt + i * btnms->rects.opad + btnms->rects.hpad;
area_set(&ext->btn_areas[btn_i], act_x,
act_y,
act_x + act_unit_w,
act_y + btn_h);
unit_act_cnt += lv_btnm_get_width_unit(map_p_tmp[i]);
i_tot ++;
btn_i ++;
}
}
act_y += btn_h + btnms->rects.opad;
if(strlen(map_p_tmp[btn_cnt]) == 0) break; /*Break on end of map*/
map_p_tmp = &map_p_tmp[btn_cnt + 1]; /*Set the map to the next line*/
i_tot ++; /*Skip the '\n'*/
}
lv_obj_inv(btnm);
}
/**
* Set a new callback function for the buttons (It will be called when a button is released)
* @param btnm: pointer to button matrix object
* @param cb pointer to a callback function
*/
void lv_btnm_set_cb(lv_obj_t * btnm, lv_btnm_callback_t cb)
{
LV_EA(btnm, lv_btnm_ext_t)->cb = cb;
}
/*=====================
* Getter functions
*====================*/
/**
* Get the current map of a button matrix
* @param btnm pointer to a button matrix object
* @return the current map
*/
const char ** lv_btnm_get_map(lv_obj_t * btnm)
{
return LV_EA(btnm, lv_btnm_ext_t)->map_p;
}
/**
* Get a the callback function of the buttons on a button matrix
* @param btnm: pointer to button matrix object
* @return pointer to the callback function
*/
lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * btnm)
{
return LV_EA(btnm, lv_btnm_ext_t)->cb;
}
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_btnms_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_btnms_t style
*/
lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy)
{
static bool style_inited = false;
/*Make the style initialization if it is not done yet*/
if(style_inited == false) {
lv_btnms_init();
style_inited = true;
}
lv_btnms_t *style_p;
switch(style) {
case LV_BTNMS_DEF:
style_p = &lv_btnms_def;
break;
default:
style_p = &lv_btnms_def;
}
if(copy != NULL) {
if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_btnms_t));
else memcpy(copy, &lv_btnms_def, sizeof(lv_btnms_t));
}
return style_p;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Handle the drawing related tasks of the button matrixs
* @param btnm pointer to a button matrix object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_btnm_design(lv_obj_t * btnm, const area_t * mask, lv_design_mode_t mode)
{
if(mode == LV_DESIGN_COVER_CHK) {
return ancestor_design_f(btnm, mask, mode);
/*Return false if the object is not covers the mask_p area*/
}
/*Draw the object*/
else if (mode == LV_DESIGN_DRAW_MAIN) {
ancestor_design_f(btnm, mask, mode);
lv_btnm_ext_t * ext = lv_obj_get_ext(btnm);
lv_btnms_t * style = lv_obj_get_style(btnm);
area_t area_btnm;
area_t area_tmp;
cord_t btn_w;
cord_t btn_h;
uint16_t btn_i = 0;
uint16_t txt_i = 0;
for(btn_i = 0; btn_i < ext->btn_cnt; btn_i ++) {
lv_obj_get_cords(btnm, &area_btnm);
area_cpy(&area_tmp, &ext->btn_areas[btn_i]);
area_tmp.x1 += area_btnm.x1;
area_tmp.y1 += area_btnm.y1;
area_tmp.x2 += area_btnm.x1;
area_tmp.y2 += area_btnm.y1;
btn_w = area_get_width(&area_tmp);
btn_h = area_get_height(&area_tmp);
/*Load the style*/
lv_rects_t new_rects;
lv_btn_state_t state;
state = ext->btn_pr == btn_i ? LV_BTN_STATE_PR : LV_BTN_STATE_REL;
memcpy(&new_rects, &style->btns, sizeof(lv_rects_t));
new_rects.objs.color = style->btns.mcolor[state];
new_rects.gcolor = style->btns.gcolor[state];
new_rects.bcolor = style->btns.bcolor[state];
new_rects.lcolor = style->btns.lcolor[state];
new_rects.empty = style->btns.flags[state].empty;
new_rects.objs.transp = style->btns.flags[state].transp;
if(style->btns.flags[state].light_en != 0) new_rects.light = style->rects.light;
else new_rects.light = 0;
lv_draw_rect(&area_tmp, mask, &new_rects, OPA_COVER);
/*Search the next valid text in the map*/
while(strcmp(ext->map_p[txt_i], "\n") == 0) txt_i ++;
/*Calculate the size of the text*/
const font_t * font = font_get(style->labels.font);
point_t txt_size;
txt_get_size(&txt_size, ext->map_p[txt_i], font,
style->labels.letter_space, style->labels.line_space, area_get_width(&area_btnm));
area_tmp.x1 += (btn_w - txt_size.x) / 2;
area_tmp.y1 += (btn_h - txt_size.y) / 2;
area_tmp.x2 = area_tmp.x1 + txt_size.x;
area_tmp.y2 = area_tmp.y1 + txt_size.y;
lv_draw_label(&area_tmp, mask, &style->labels, OPA_COVER, ext->map_p[txt_i]);
txt_i ++;
}
}
return true;
}
/**
* Initialize the button matrix styles
*/
static void lv_btnms_init(void)
{
/*Default style*/
lv_rects_get(LV_RECTS_DEF, &lv_btnms_def.rects); /*Background rectangle style*/
lv_btns_get(LV_BTNS_DEF, &lv_btnms_def.btns); /*Button style*/
lv_labels_get(LV_LABELS_BTN, &lv_btnms_def.labels); /*BUtton label style*/
}
/**
* Create the required number of buttons according to a map
* @param btnm pointer to button matrix object
* @param map_p pointer to a string array
*/
static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map)
{
/*Count the buttons in the map*/
uint16_t btn_cnt = 0;
uint16_t i = 0;
while(strlen(map[i]) != 0) {
if(strcmp(map[i], "\n") != 0) { /*Do not count line breaks*/
btn_cnt ++;
}
i++;
}
lv_btnm_ext_t * ext = lv_obj_get_ext(btnm);
if(ext->btn_areas != NULL) {
dm_free(ext->btn_areas);
}
ext->btn_areas = dm_alloc(sizeof(area_t) * btn_cnt);
ext->btn_cnt = btn_cnt;
}
/**
* Get the width of a button in units. It comes from the first "letter".
* @param btn_str The descriptor string of a button. E.g. "apple" or "\004banana"
* @return the width of the button in units
*/
static uint8_t lv_btnm_get_width_unit(const char * btn_str)
{
if(btn_str[0] <= '\011') return btn_str[0];
return 1;
}
static uint16_t lv_btnm_get_btn_from_point(lv_obj_t * btnm, point_t * p)
{
area_t btnm_cords;
area_t btn_area;
lv_btnm_ext_t * ext = lv_obj_get_ext(btnm);
uint16_t i;
lv_obj_get_cords(btnm, &btnm_cords);
for(i = 0; i < ext->btn_cnt; i++) {
area_cpy(&btn_area, &ext->btn_areas[i]);
btn_area.x1 += btnm_cords.x1;
btn_area.y1 += btnm_cords.y1;
btn_area.x2 += btnm_cords.x1;
btn_area.y2 += btnm_cords.y1;
if(area_is_point_on(&btn_area, p) != false) {
break;
}
}
if(i == ext->btn_cnt) i = LV_BTNM_BTN_PR_INVALID;
return i;
}
#endif

View File

@@ -1,139 +0,0 @@
/**
* @file lv_btnm.h
*
*/
#ifndef LV_BTNM_H
#define LV_BTNM_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_BTNM != 0
/*Testing of dependencies*/
#if USE_LV_RECT == 0
#error "lv_btnm: lv_rect is required. Enable it in lv_conf.h (USE_LV_RECT 1) "
#endif
#if USE_LV_BTN == 0
#error "lv_btnm: lv_btn is required. Enable it in lv_conf.h (USE_LV_BTN 1) "
#endif
#include "../lv_obj/lv_obj.h"
#include "lv_rect.h"
#include "lv_label.h"
#include "lv_btn.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/* Type of callback function which is called when a button is released
* Parameters: button matrix, released button index in the map string
* return LV_ACTION_RES_INV: the button matrix is deleted else LV_ACTION_RES_OK*/
typedef lv_action_res_t (*lv_btnm_callback_t) (lv_obj_t *, uint16_t);
/*Data of button matrix*/
typedef struct
{
lv_rect_ext_t rect; /*Ext. of ancestor*/
/*New data for this type */
const char ** map_p; /*Pointer to the current map*/
area_t * btn_areas;
uint16_t btn_cnt;
uint16_t btn_pr;
lv_btnm_callback_t cb;
}lv_btnm_ext_t;
/*Style of button matrix*/
typedef struct
{
lv_rects_t rects; /*Style of ancestor*/
/*New style element for this type */
lv_btns_t btns; /*Style of the buttons*/
lv_labels_t labels; /*Style of the labels on the buttons*/
}lv_btnms_t;
/*Built-in styles of button matrix*/
typedef enum
{
LV_BTNMS_DEF,
}lv_btnms_builtin_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Create a button matrix objects
* @param par pointer to an object, it will be the parent of the new button matrix
* @param copy pointer to a button matrix object, if not NULL then the new object will be copied from it
* @return pointer to the created button matrix
*/
lv_obj_t * lv_btnm_create(lv_obj_t * par, lv_obj_t * copy);
/**
* Signal function of the button matrix
* @param btnm pointer to a button matrix object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return true: the object is still valid (not deleted), false: the object become invalid
*/
bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param);
/**
* Set a new map. Buttons will be created/deleted according to the map.
* @param btnm pointer to a button matrix object
* @param map pointer a string array. The last string has to be: "".
* Use "\n" to begin a new line.
* Use octal numbers (e.g. "\003") to set the relative
* width of a button. (max. 9 -> \011)
* (e.g. const char * str[] = {"a", "b", "\n", "\004c", "d", ""}).
* The button do not copy the array so it can not be a local variable.
*/
void lv_btnm_set_map(lv_obj_t * btnm, const char ** map);
/**
* Set a new callback function for the buttons (It will be called when a button is released)
* @param btnm: pointer to button matrix object
* @param cb pointer to a callback function
*/
void lv_btnm_set_cb(lv_obj_t * btnm, lv_btnm_callback_t cb);
/**
* Get the current map of a button matrix
* @param btnm pointer to a button matrix object
* @return the current map
*/
const char ** lv_btnm_get_map(lv_obj_t * btnm);
/**
* Get a the callback function of the buttons on a button matrix
* @param btnm: pointer to button matrix object
* @return pointer to the callback function
*/
lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * btnm);
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_btnms_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_btnms_t style
*/
lv_btnms_t * lv_btnms_get(lv_btnms_builtin_t style, lv_btnms_t * copy);
/**********************
* MACROS
**********************/
#endif /*USE_LV_BTNM*/
#endif /*LV_BTNM_H*/

View File

@@ -1,294 +0,0 @@
/**
* @file lv_cb.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_CB != 0
#include "lv_cb.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool lv_cb_design(lv_obj_t * cb, const area_t * mask, lv_design_mode_t mode);
static void lv_cbs_init(void);
/**********************
* STATIC VARIABLES
**********************/
static lv_cbs_t lv_cbs_def;
static lv_design_f_t ancestor_design_f;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/*-----------------
* Create function
*-----------------*/
/**
* Create a check box objects
* @param par pointer to an object, it will be the parent of the new check box
* @param copy pointer to a check box object, if not NULL then the new object will be copied from it
* @return pointer to the created check box
*/
lv_obj_t * lv_cb_create(lv_obj_t * par, lv_obj_t * copy)
{
/*Create the ancestor basic object*/
lv_obj_t * new_cb = lv_btn_create(par, copy);
dm_assert(new_cb);
lv_cb_ext_t * ext = lv_obj_alloc_ext(new_cb, sizeof(lv_cb_ext_t));
dm_assert(ext);
ext->bullet = NULL;
ext->label = NULL;
if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_f(new_cb);
lv_obj_set_signal_f(new_cb, lv_cb_signal);
lv_obj_set_design_f(new_cb, lv_cb_design);
/*Init the new checkbox object*/
if(copy == NULL) {
lv_rect_set_layout(new_cb, LV_RECT_LAYOUT_ROW_M);
lv_rect_set_fit(new_cb, true, true);
lv_btn_set_tgl(new_cb, true);
ext->bullet = lv_btn_create(new_cb, NULL);
lv_obj_set_click(ext->bullet, false);
ext->label = lv_label_create(new_cb, NULL);
lv_label_set_text(ext->label, "Check box");
lv_obj_set_style(new_cb, lv_cbs_get(LV_CBS_DEF, NULL));
} else {
lv_cb_ext_t * copy_ext = lv_obj_get_ext(copy);
ext->bullet = lv_btn_create(new_cb, copy_ext->bullet);
ext->label = lv_label_create(new_cb, copy_ext->label);
/*Refresh the style with new signal function*/
lv_obj_refr_style(new_cb);
}
lv_obj_align_us(new_cb, NULL, LV_ALIGN_CENTER, 0, 0);
return new_cb;
}
/**
* Signal function of the check box
* @param cb pointer to a check box object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_cb_signal(lv_obj_t * cb, lv_signal_t sign, void * param)
{
bool valid;
/* Include the ancient signal function */
valid = lv_btn_signal(cb, sign, param);
lv_cb_ext_t * ext = lv_obj_get_ext(cb);
lv_cbs_t * cbs = lv_obj_get_style(cb);
/* The object can be deleted so check its validity and then
* make the object specific signal handling */
if(valid != false) {
switch(sign) {
case LV_SIGNAL_PRESSED:
case LV_SIGNAL_RELEASED:
case LV_SIGNAL_LONG_PRESS:
case LV_SIGNAL_PRESS_LOST:
lv_btn_set_state(ext->bullet, lv_btn_get_state(cb));
break;
case LV_SIGNAL_STYLE_CHG:
lv_obj_set_size(ext->bullet, cbs->bullet_size, cbs->bullet_size);
lv_obj_set_style(ext->bullet, &cbs->bullet);
lv_obj_set_style(ext->label, &cbs->label);
break;
case LV_SIGNAL_CLEANUP:
/*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
break;
default:
break;
}
}
return valid;
}
/*=====================
* Setter functions
*====================*/
/**
* Set the text of a check box
* @param cb pointer to a check box
* @param txt the text of the check box
*/
void lv_cb_set_text(lv_obj_t * cb, const char * txt)
{
lv_cb_ext_t * ext = lv_obj_get_ext(cb);
lv_label_set_text(ext->label, txt);
}
/*=====================
* Getter functions
*====================*/
/**
* Get the text of a check box
* @param cb pointer to check box object
* @return pointer to the text of the check box
*/
const char * lv_cb_get_text(lv_obj_t * cb)
{
lv_cb_ext_t * ext = lv_obj_get_ext(cb);
return lv_label_get_text(ext->label);
}
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_cbs_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_cbs_t style
*/
lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy)
{
static bool style_inited = false;
/*Make the style initialization if it is not done yet*/
if(style_inited == false) {
lv_cbs_init();
style_inited = true;
}
lv_cbs_t *style_p;
switch(style) {
case LV_CBS_DEF:
style_p = &lv_cbs_def;
break;
default:
style_p = &lv_cbs_def;
}
if(copy != NULL) {
if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_cbs_t));
else memcpy(copy, &lv_cbs_def, sizeof(lv_cbs_t));
}
return style_p;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Handle the drawing related tasks of the check boxes
* @param cb pointer to an object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_cb_design(lv_obj_t * cb, const area_t * mask, lv_design_mode_t mode)
{
if(mode == LV_DESIGN_COVER_CHK) {
/*Return false if the object is not covers the mask_p area*/
return ancestor_design_f(cb, mask, mode);
} else if(mode == LV_DESIGN_DRAW_MAIN || mode == LV_DESIGN_DRAW_POST) {
lv_cb_ext_t * cb_ext = lv_obj_get_ext(cb);
lv_btn_ext_t * bullet_ext = lv_obj_get_ext(cb_ext->bullet);
/*Be sure he state of the bullet is the same as the parent button*/
bullet_ext->state = cb_ext->bg_btn.state;
return ancestor_design_f(cb, mask, mode);
}
/*Draw the object*/
return true;
}
/**
* Initialize the rectangle styles
*/
static void lv_cbs_init(void)
{
/*Default style*/
/*Bg style*/
lv_btns_get(LV_RECTS_TRANSP, &lv_cbs_def.bg);
lv_cbs_def.bg.rects.hpad = 6 * LV_DOWNSCALE;
lv_cbs_def.bg.rects.vpad = 6 * LV_DOWNSCALE;
lv_cbs_def.bg.rects.opad = 5 * LV_DOWNSCALE;
/*Bullet style*/
lv_btns_get(LV_BTNS_DEF, &lv_cbs_def.bullet);
lv_cbs_def.bullet.mcolor[LV_BTN_STATE_REL] = COLOR_WHITE;
lv_cbs_def.bullet.gcolor[LV_BTN_STATE_REL] = COLOR_SILVER;
lv_cbs_def.bullet.bcolor[LV_BTN_STATE_REL] = COLOR_BLACK;
lv_cbs_def.bullet.flags[LV_BTN_STATE_REL].light_en = 0;
lv_cbs_def.bullet.mcolor[LV_BTN_STATE_PR] = COLOR_SILVER;
lv_cbs_def.bullet.gcolor[LV_BTN_STATE_PR] = COLOR_GRAY;
lv_cbs_def.bullet.bcolor[LV_BTN_STATE_PR] = COLOR_BLACK;
lv_cbs_def.bullet.flags[LV_BTN_STATE_PR].light_en = 0;
lv_cbs_def.bullet.mcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x20, 0x30, 0x40);
lv_cbs_def.bullet.gcolor[LV_BTN_STATE_TGL_REL] = COLOR_MAKE(0x10, 0x20, 0x30);
lv_cbs_def.bullet.bcolor[LV_BTN_STATE_TGL_REL] = COLOR_WHITE;
lv_cbs_def.bullet.flags[LV_BTN_STATE_TGL_REL].light_en = 1;
lv_cbs_def.bullet.mcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x50, 0x70, 0x90);
lv_cbs_def.bullet.gcolor[LV_BTN_STATE_TGL_PR] = COLOR_MAKE(0x20, 0x30, 0x40);
lv_cbs_def.bullet.bcolor[LV_BTN_STATE_TGL_PR] = COLOR_WHITE;
lv_cbs_def.bullet.flags[LV_BTN_STATE_TGL_PR].light_en = 1;
lv_cbs_def.bullet.mcolor[LV_BTN_STATE_INA] = COLOR_SILVER;
lv_cbs_def.bullet.gcolor[LV_BTN_STATE_INA] = COLOR_GRAY;
lv_cbs_def.bullet.bcolor[LV_BTN_STATE_INA] = COLOR_WHITE;
lv_cbs_def.bullet.flags[LV_BTN_STATE_INA].light_en = 0;
lv_cbs_def.bullet.rects.bwidth = 2 * LV_DOWNSCALE;
lv_cbs_def.bullet.rects.bopa = 70;
lv_cbs_def.bullet.rects.light = 6 * LV_DOWNSCALE;
lv_cbs_def.bullet.rects.empty = 0;
lv_cbs_def.bullet.rects.round = LV_OBJ_DEF_WIDTH / 3 / 4;
lv_cbs_def.bullet.rects.hpad = 0 * LV_DOWNSCALE;
lv_cbs_def.bullet.rects.vpad = 0 * LV_DOWNSCALE;
lv_cbs_def.bullet.rects.opad = 0 * LV_DOWNSCALE;
/*Label*/
lv_labels_get(LV_LABELS_TXT, &lv_cbs_def.label);
lv_cbs_def.label.objs.color = COLOR_MAKE(0x10, 0x18, 0x20);
/*Others*/
lv_cbs_def.bullet_size = LV_OBJ_DEF_WIDTH / 3;
}
#endif

View File

@@ -1,108 +0,0 @@
/**
* @file lv_cb.h
*
*/
#ifndef LV_CB_H
#define LV_CB_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_CB != 0
/*Testing of dependencies*/
#if USE_LV_BTN == 0
#error "lv_cb: lv_rect is required. Enable it in lv_conf.h (USE_LV_BTN 1) "
#endif
#if USE_LV_LABEL == 0
#error "lv_cb: lv_label is required. Enable it in lv_conf.h (USE_LV_LABEL 1) "
#endif
#include "../lv_obj/lv_obj.h"
#include "lv_btn.h"
#include "lv_label.h"
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/*Data of check box*/
typedef struct
{
lv_btn_ext_t bg_btn; /*Ext. of ancestor*/
/*New data for this type */
lv_obj_t * bullet;
lv_obj_t * label;
}lv_cb_ext_t;
/*Style of check box*/
typedef struct
{
lv_btns_t bg; /*Style of ancestor*/
/*New style element for this type */
lv_btns_t bullet;
lv_labels_t label;
cord_t bullet_size;
}lv_cbs_t;
/*Built-in styles of check box*/
typedef enum
{
LV_CBS_DEF,
}lv_cbs_builtin_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Create a check box objects
* @param par pointer to an object, it will be the parent of the new check box
* @param copy pointer to a check box object, if not NULL then the new object will be copied from it
* @return pointer to the created check box
*/
lv_obj_t * lv_cb_create(lv_obj_t * par, lv_obj_t * copy);
/**
* Signal function of the check box
* @param cb pointer to a check box object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_cb_signal(lv_obj_t * cb, lv_signal_t sign, void * param);
/**
* Set the text of a check box
* @param cb pointer to a check box
* @param txt the text of the check box
*/
void lv_cb_set_text(lv_obj_t * cb, const char * txt);
/**
* Get the text of a check box
* @param cb pointer to check box object
* @return pointer to the text of the check box
*/
const char * lv_cb_get_text(lv_obj_t * cb);
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_cbs_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_cbs_t style
*/
lv_cbs_t * lv_cbs_get(lv_cbs_builtin_t style, lv_cbs_t * copy);
/**********************
* MACROS
**********************/
#endif
#endif

View File

@@ -1,619 +0,0 @@
/**
* @file lv_chart.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_CHART != 0
#include "lv_chart.h"
#include "../lv_draw/lv_draw.h"
/*********************
* DEFINES
*********************/
#define LV_CHART_YMIN_DEF 0
#define LV_CHART_YMAX_DEF 100
#define LV_CHART_HDIV_DEF 3
#define LV_CHART_VDIV_DEF 5
#define LV_CHART_PNUM_DEF 10
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool lv_chart_design(lv_obj_t * chart, const area_t * mask, lv_design_mode_t mode);
static void lv_charts_init(void);
static void lv_chart_draw_div(lv_obj_t * chart, const area_t * mask);
static void lv_chart_draw_lines(lv_obj_t * chart, const area_t * mask);
static void lv_chart_draw_points(lv_obj_t * chart, const area_t * mask);
static void lv_chart_draw_cols(lv_obj_t * chart, const area_t * mask);
/**********************
* STATIC VARIABLES
**********************/
static lv_charts_t lv_charts_def;
static lv_charts_t lv_charts_transp;
static lv_design_f_t ancestor_design_f;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/*-----------------
* Create function
*-----------------*/
/**
* Create a chart background objects
* @param par pointer to an object, it will be the parent of the new chart background
* @param copy pointer to a chart background object, if not NULL then the new object will be copied from it
* @return pointer to the created chart background
*/
lv_obj_t * lv_chart_create(lv_obj_t * par, lv_obj_t * copy)
{
/*Create the ancestor basic object*/
lv_obj_t * new_chart = lv_rect_create(par, copy);
dm_assert(new_chart);
/*Allocate the object type specific extended data*/
lv_chart_ext_t * ext = lv_obj_alloc_ext(new_chart, sizeof(lv_chart_ext_t));
dm_assert(ext);
ll_init(&ext->dl_ll, sizeof(cord_t *));
ext->dl_num = 0;
ext->ymin = LV_CHART_YMIN_DEF;
ext->ymax = LV_CHART_YMAX_DEF;
ext->hdiv_num = LV_CHART_HDIV_DEF;
ext->vdiv_num = LV_CHART_VDIV_DEF;
ext->pnum = LV_CHART_PNUM_DEF;
ext->type = LV_CHART_LINE;
if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_f(new_chart);
lv_obj_set_signal_f(new_chart, lv_chart_signal);
lv_obj_set_design_f(new_chart, lv_chart_design);
/*Init the new chart background object*/
if(copy == NULL) {
lv_obj_set_style(new_chart, lv_charts_get(LV_CHARTS_DEF, NULL));
} else {
lv_chart_ext_t * ext_copy = lv_obj_get_ext(copy);
ext->type = ext_copy->type;
ext->ymin = ext_copy->ymin;
ext->ymax = ext_copy->ymax;
ext->hdiv_num = ext_copy->hdiv_num;
ext->vdiv_num = ext_copy->vdiv_num;
ext->pnum = ext_copy->pnum;
/*Refresh the style with new signal function*/
lv_obj_refr_style(new_chart);
}
return new_chart;
}
/**
* Signal function of the chart background
* @param chart pointer to a chart background object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_chart_signal(lv_obj_t * chart, lv_signal_t sign, void * param)
{
bool valid;
/* Include the ancient signal function */
valid = lv_rect_signal(chart, sign, param);
/* The object can be deleted so check its validity and then
* make the object specific signal handling */
if(valid != false) {
cord_t ** datal;
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
switch(sign) {
case LV_SIGNAL_CLEANUP:
LL_READ(ext->dl_ll, datal) {
dm_free(*datal);
}
ll_clear(&ext->dl_ll);
break;
default:
break;
}
}
return valid;
}
/**
* Allocate and add a data line to the chart
* @param chart pointer to a chart object
* @return pointer to the allocated data lie (an array for the data points)
*/
cord_t * lv_chart_add_dataline(lv_obj_t * chart)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
cord_t ** dl = ll_ins_head(&ext->dl_ll);
cord_t def = (ext->ymax - ext->ymin) >> 2; /*1/4 range as default value*/
if(dl == NULL) return NULL;
*dl = dm_alloc(sizeof(cord_t) * ext->pnum);
uint16_t i;
cord_t * p_tmp = *dl;
for(i = 0; i < ext->pnum; i++) {
*p_tmp = def;
p_tmp++;
}
ext->dl_num++;
return *dl;
}
/**
* Refresh a chart if its data line has changed
* @param chart pointer to chart object
*/
void lv_chart_refr(lv_obj_t * chart)
{
lv_obj_inv(chart);
}
/*=====================
* Setter functions
*====================*/
/**
* Set the number of horizontal and vertical division lines
* @param chart pointer to a graph background object
* @param hdiv number of horizontal division lines
* @param vdiv number of vertical division lines
*/
void lv_chart_set_hvdiv(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
ext->hdiv_num = hdiv;
ext->vdiv_num = vdiv;
lv_obj_inv(chart);
}
/**
* Set the minimal and maximal x and y values
* @param chart pointer to a graph background object
* @param xmin x minimum value
* @param xmax x maximum value
* @param ymin y minimum value
* @param ymax y maximum value
*/
void lv_chart_set_range(lv_obj_t * chart, cord_t ymin, cord_t ymax)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
ext->ymin = ymin;
ext->ymax = ymax;
lv_chart_refr(chart);
}
/**
* Set a new type for a chart
* @param chart pointer to a chart object
* @param type new type of the chart (from 'lv_chart_type_t' enum)
*/
void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
ext->type = type;
lv_chart_refr(chart);
}
/**
* Set the number of points on a data line on a chart
* @param chart pointer r to chart object
* @param pnum new number of points on the data lines
*/
void lv_chart_set_pnum(lv_obj_t * chart, uint16_t pnum)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
cord_t ** y_data;
if(pnum < 1) pnum = 1;
LL_READ_BACK(ext->dl_ll, y_data) {
*y_data = dm_realloc(*y_data, sizeof(cord_t) * pnum);
}
ext->pnum = pnum;
lv_chart_refr(chart);
}
/**
* Shift all data right and set the most right data on a data line
* @param chart pointer to chart object
* @param dl pointer to a data line on 'chart'
* @param y the new value of the most right data
*/
void lv_chart_set_next(lv_obj_t * chart, cord_t * dl, cord_t y)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
uint16_t i;
for(i = 0; i < ext->pnum - 1; i++) {
dl[i] = dl[i + 1];
}
dl[ext->pnum - 1] = y;
lv_chart_refr(chart);
}
/*=====================
* Getter functions
*====================*/
/**
* Get the type of a chart
* @param chart pointer to chart object
* @return type of the chart (from 'lv_chart_t' enum)
*/
lv_chart_type_t lv_chart_get_type(lv_obj_t * chart)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
return ext->type;
}
/**
* Get the data point number per data line on chart
* @param chart pointer to chart object
* @return point number on each data line
*/
uint16_t lv_chart_get_pnum(lv_obj_t * chart)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
return ext->pnum;
}
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_charts_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_charts_t style
*/
lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy)
{
static bool style_inited = false;
/*Make the style initialization if it is not done yet*/
if(style_inited == false) {
lv_charts_init();
style_inited = true;
}
lv_charts_t * style_p;
switch(style) {
case LV_CHARTS_DEF:
style_p = &lv_charts_def;
break;
case LV_CHARTS_TRANSP:
style_p = &lv_charts_transp;
break;
default:
style_p = &lv_charts_def;
}
if(copy != NULL) {
if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_charts_t));
else memcpy(copy, &lv_charts_def, sizeof(lv_charts_t));
}
return style_p;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Handle the drawing related tasks of the chart backgrounds
* @param chart pointer to an object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_chart_design(lv_obj_t * chart, const area_t * mask, lv_design_mode_t mode)
{
if(mode == LV_DESIGN_COVER_CHK) {
/*Return false if the object is not covers the mask_p area*/
return ancestor_design_f(chart, mask, mode);
} else if(mode == LV_DESIGN_DRAW_MAIN) {
/*Draw the rectangle ancient*/
ancestor_design_f(chart, mask, mode);
/*Draw the object*/
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
lv_chart_draw_div(chart, mask);
switch(ext->type) {
case LV_CHART_LINE:
lv_chart_draw_lines(chart, mask);
break;
case LV_CHART_COL:
lv_chart_draw_cols(chart, mask);
break;
case LV_CHART_POINT:
lv_chart_draw_points(chart, mask);
break;
default:
break;
}
}
return true;
}
/**
* Draw the division lines on chart background
* @param chart pointer to chart object
* @param mask mask, inherited from the design function
*/
static void lv_chart_draw_div(lv_obj_t * chart, const area_t * mask)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
lv_charts_t * style = lv_obj_get_style(chart);
if(style->div_lines.objs.transp != 0) return;
uint8_t div_i;
point_t p1;
point_t p2;
cord_t w = lv_obj_get_width(chart);
cord_t h = lv_obj_get_height(chart);
opa_t div_opa = (uint16_t)lv_obj_get_opa(chart) * style->div_line_opa / 100;
cord_t x_ofs = chart->cords.x1;
cord_t y_ofs = chart->cords.y1;
p1.x = 0 + x_ofs;
p2.x = w + x_ofs;
for(div_i = 1; div_i <= ext->hdiv_num; div_i ++) {
p1.y = (int32_t)((int32_t)h * div_i) / (ext->hdiv_num + 1);
p1.y += y_ofs;
p2.y = p1.y;
lv_draw_line(&p1, &p2, mask, &style->div_lines, div_opa);
}
p1.y = 0 + y_ofs;
p2.y = h + y_ofs;
for(div_i = 1; div_i <= ext->vdiv_num; div_i ++) {
p1.x = (int32_t)((int32_t)w * div_i) / (ext->vdiv_num + 1);
p1.x += x_ofs;
p2.x = p1.x;
lv_draw_line(&p1, &p2, mask, &style->div_lines, div_opa);
}
}
/**
* Draw the data lines as lines on a chart
* @param obj pointer to chart object
*/
static void lv_chart_draw_lines(lv_obj_t * chart, const area_t * mask)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
lv_charts_t * style_p = lv_obj_get_style(chart);
uint8_t i;
point_t p1;
point_t p2;
cord_t w = lv_obj_get_width(chart);
cord_t h = lv_obj_get_height(chart);
opa_t opa = (uint16_t)lv_obj_get_opa(chart) * style_p->data_opa / 100;
cord_t x_ofs = chart->cords.x1;
cord_t y_ofs = chart->cords.y1;
int32_t y_tmp;
cord_t ** y_data;
uint8_t dl_cnt = 0;
lv_lines_t lines;
lv_lines_get(LV_LINES_CHART, &lines);
/*Go through all data lines*/
LL_READ_BACK(ext->dl_ll, y_data) {
lines.objs.color = style_p->color[dl_cnt];
lines.width = style_p->width;
p1.x = 0 + x_ofs;
p2.x = 0 + x_ofs;
y_tmp = (int32_t)((int32_t) (*y_data)[0] - ext->ymin) * h;
y_tmp = y_tmp / (ext->ymax - ext->ymin);
p2.y = h - y_tmp + y_ofs;
for(i = 1; i < ext->pnum; i ++) {
p1.x = p2.x;
p1.y = p2.y;
p2.x = ((w * i) / (ext->pnum - 1)) + x_ofs;
y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext->ymin) * h;
y_tmp = y_tmp / (ext->ymax - ext->ymin);
p2.y = h - y_tmp + y_ofs;
lv_draw_line(&p1, &p2, mask, &lines, opa);
}
dl_cnt++;
}
}
/**
* Draw the data lines as points on a chart
* @param chart pointer to chart object
* @param mask mask, inherited from the design function
*/
static void lv_chart_draw_points(lv_obj_t * chart, const area_t * mask)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
lv_charts_t * style_p = lv_obj_get_style(chart);
uint8_t i;
area_t cir_a;
cord_t w = lv_obj_get_width(chart);
cord_t h = lv_obj_get_height(chart);
opa_t opa = (uint16_t)lv_obj_get_opa(chart) * style_p->data_opa / 100;
cord_t x_ofs = chart->cords.x1;
cord_t y_ofs = chart->cords.y1;
int32_t y_tmp;
cord_t ** y_data;
uint8_t dl_cnt = 0;
lv_rects_t rects;
cord_t rad = style_p->width;
lv_rects_get(LV_RECTS_DEF, &rects);
rects.bwidth = 0;
rects.empty = 0;
rects.round = LV_RECT_CIRCLE;
/*Go through all data lines*/
LL_READ_BACK(ext->dl_ll, y_data) {
rects.objs.color = style_p->color[dl_cnt];
rects.gcolor = color_mix(COLOR_BLACK, style_p->color[dl_cnt], style_p->dark_eff);
for(i = 0; i < ext->pnum; i ++) {
cir_a.x1 = ((w * i) / (ext->pnum - 1)) + x_ofs;
cir_a.x2 = cir_a.x1 + rad;
cir_a.x1 -= rad;
y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext->ymin) * h;
y_tmp = y_tmp / (ext->ymax - ext->ymin);
cir_a.y1 = h - y_tmp + y_ofs;
cir_a.y2 = cir_a.y1 + rad;
cir_a.y1 -= rad;
lv_draw_rect(&cir_a, mask, &rects, opa);
}
dl_cnt++;
}
}
/**
* Draw the data lines as columns on a chart
* @param chart pointer to chart object
* @param mask mask, inherited from the design function
*/
static void lv_chart_draw_cols(lv_obj_t * chart, const area_t * mask)
{
lv_chart_ext_t * ext = lv_obj_get_ext(chart);
lv_charts_t * style_p = lv_obj_get_style(chart);
uint8_t i;
area_t col_a;
area_t col_mask;
bool mask_ret;
cord_t w = lv_obj_get_width(chart);
cord_t h = lv_obj_get_height(chart);
opa_t opa = (uint16_t)lv_obj_get_opa(chart) * style_p->data_opa / 100;
int32_t y_tmp;
cord_t ** y_data;
uint8_t dl_cnt = 0;
lv_rects_t rects;
cord_t col_w = w / (2 * ext->dl_num * ext->pnum); /* Suppose (2 * dl_num) * pnum columns*/
cord_t x_ofs = col_w / 2; /*Shift with a half col.*/
lv_rects_get(LV_RECTS_DEF, &rects);
rects.bwidth = 0;
rects.empty = 0;
rects.round = 0;
col_a.y2 = chart->cords.y2;
/*Go through all data lines*/
LL_READ_BACK(ext->dl_ll, y_data) {
rects.objs.color = style_p->color[dl_cnt];
rects.gcolor = color_mix(COLOR_BLACK, style_p->color[dl_cnt], style_p->dark_eff);
for(i = 0; i < ext->pnum; i ++) {
/* Calculate the x coordinates. Suppose (2 * dl_num) * pnum columns and draw to every second
* the other columns will be spaces.
* col_w = w / (2 * ext->dl_num * ext->pnum)
* act_col_x = col_w * i * ext->dl_num * 2 + 2 * dl_cnt
* Reorder the operation to multiply first*/
col_a.x1 = (int32_t)((int32_t) w * ((i * ext->dl_num * 2) + (2 * dl_cnt))) /
(ext->pnum * 2 * ext->dl_num);
col_a.x1 += chart->cords.x1;
col_a.x2 = col_a.x1 + col_w;
col_a.x1 += x_ofs;
col_a.x2 += x_ofs;
y_tmp = (int32_t)((int32_t) (*y_data)[i] - ext->ymin) * h;
y_tmp = y_tmp / (ext->ymax - ext->ymin);
col_a.y1 = h - y_tmp + chart->cords.y1;
mask_ret = area_union(&col_mask, mask, &col_a);
if(mask_ret != false) {
lv_draw_rect(&chart->cords, &col_mask, &rects, opa);
}
}
dl_cnt++;
}
}
/**
* Initialize the chart styles
*/
static void lv_charts_init(void)
{
/*Default style*/
/* Background */
lv_rects_get(LV_RECTS_DEF, &lv_charts_def.bg_rects);
lv_charts_def.bg_rects.objs.color = COLOR_MAKE(0x60, 0x80, 0xA0);
lv_charts_def.bg_rects.gcolor = COLOR_WHITE;
lv_charts_def.bg_rects.bcolor = COLOR_BLACK;
/* Div. line */
lv_lines_get(LV_LINES_DECOR, &lv_charts_def.div_lines);
lv_charts_def.div_lines.width = 1 * LV_DOWNSCALE;
lv_charts_def.div_lines.objs.color = COLOR_BLACK;
lv_charts_def.div_line_opa = OPA_COVER;
/*Data lines*/
lv_charts_def.width = 2 * LV_DOWNSCALE;
lv_charts_def.data_opa = 100;
lv_charts_def.dark_eff = 150;
lv_charts_def.color[0] = COLOR_RED;
lv_charts_def.color[1] = COLOR_GREEN;
lv_charts_def.color[2] = COLOR_BLUE;
lv_charts_def.color[3] = COLOR_MAGENTA;
lv_charts_def.color[4] = COLOR_CYAN;
lv_charts_def.color[5] = COLOR_YELLOW;
lv_charts_def.color[6] = COLOR_WHITE;
lv_charts_def.color[7] = COLOR_GRAY;
memcpy(&lv_charts_transp, &lv_charts_def, sizeof(lv_charts_t));
lv_charts_transp.bg_rects.empty = 1;
lv_charts_transp.bg_rects.bwidth = 0;
lv_charts_transp.div_lines.objs.transp = 1;
}
#endif

View File

@@ -1,180 +0,0 @@
/**
* @file lv_chart.h
*
*/
#ifndef LV_CHARTBG_H
#define LV_CHARTBG_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_CHART != 0
/*Testing of dependencies*/
#if USE_LV_RECT == 0
#error "lv_chart: lv_rect is required. Enable it in lv_conf.h (USE_LV_RECT 1) "
#endif
#if USE_LV_LINE == 0
#error "lv_chart: lv_line is required. Enable it in lv_conf.h (USE_LV_LINE 1) "
#endif
#include "../lv_obj/lv_obj.h"
#include "lv_rect.h"
#include "lv_line.h"
/*********************
* DEFINES
*********************/
#define LV_CHART_DL_NUM 8 /*Max data line number. Used in the style.*/
/**********************
* TYPEDEFS
**********************/
/*Data of chart background*/
typedef struct
{
lv_rect_ext_t bg_rects; /*Ext. of ancestor*/
/*New data for this type */
cord_t ymin;
cord_t ymax;
uint8_t hdiv_num; /*Number of horizontal division lines*/
uint8_t vdiv_num; /*Number of vertical division lines*/
ll_dsc_t dl_ll; /*Linked list for the data line pointers (stores cord_t * )*/
uint16_t pnum; /*Point number in a data line*/
uint8_t type :2; /*Line, column or point chart (from 'lv_chart_type_t')*/
uint8_t dl_num; /*Data line number in dl_ll*/
}lv_chart_ext_t;
/*Chart types*/
typedef enum
{
LV_CHART_LINE,
LV_CHART_COL,
LV_CHART_POINT,
}lv_chart_type_t;
/*Style of chart background*/
typedef struct
{
lv_rects_t bg_rects; /*Style of ancestor*/
/*New style element for this type */
lv_lines_t div_lines;
uint8_t div_line_opa; /*Percentage of obj. opacity*/
color_t color[LV_CHART_DL_NUM]; /*Line/Point/Col color */
uint16_t width; /*Line width or point radius*/
opa_t data_opa; /*Line/Point/Col opacity in the percentage of obj. opacity*/
uint8_t dark_eff; /*Dark effect on the bottom of ó points and columns*/
}lv_charts_t;
/*Built-in styles of chart background*/
typedef enum
{
LV_CHARTS_DEF,
LV_CHARTS_TRANSP,
}lv_charts_builtin_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Create a chart background objects
* @param par pointer to an object, it will be the parent of the new chart background
* @param copy pointer to a chart background object, if not NULL then the new object will be copied from it
* @return pointer to the created chart background
*/
lv_obj_t * lv_chart_create(lv_obj_t * par, lv_obj_t * copy);
/**
* Signal function of the chart background
* @param chart pointer to a chart background object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_chart_signal(lv_obj_t * chart, lv_signal_t sign, void * param);
/**
* Allocate and add a data line to the chart
* @param chart pointer to a chart object
* @return pointer to the allocated data lie (an array for the data points)
*/
cord_t * lv_chart_add_dataline(lv_obj_t * chart);
/**
* Refresh a chart if its data line has changed
* @param chart pointer to chart object
*/
void lv_chart_refr(lv_obj_t * chart);
/**
* Set the number of horizontal and vertical division lines
* @param chart pointer to a graph background object
* @param hdiv number of horizontal division lines
* @param vdiv number of vertical division lines
*/
void lv_chart_set_hvdiv(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv);
/**
* Set the minimal and maximal x and y values
* @param chart pointer to a graph background object
* @param xmin x minimum value
* @param xmax x maximum value
* @param ymin y minimum value
* @param ymax y maximum value
*/
void lv_chart_set_range(lv_obj_t * chart, cord_t ymin, cord_t ymax);
/**
* Set a new type for a chart
* @param chart pointer to a chart object
* @param type new type of the chart (from 'lv_chart_type_t' enum)
*/
void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type);
/**
* Set the number of points on a data line on a chart
* @param chart pointer r to chart object
* @param pnum new number of points on the data lines
*/
void lv_chart_set_pnum(lv_obj_t * chart, uint16_t pnum);
/**
* Shift all data right and set the most right data on a data line
* @param chart pointer to chart object
* @param dl pointer to a data line on 'chart'
* @param y the new value of the most right data
*/
void lv_chart_set_next(lv_obj_t * chart, cord_t * dl, cord_t y);
/**
* Get the type of a chart
* @param chart pointer to chart object
* @return type of the chart (from 'lv_chart_t' enum)
*/
lv_chart_type_t lv_chart_get_type(lv_obj_t * chart);
/**
* Get the data point number per data line on chart
* @param chart pointer to chart object
* @return point number on each data line
*/
uint16_t lv_chart_get_pnum(lv_obj_t * chart);
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_charts_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_charts_t style
*/
lv_charts_t * lv_charts_get(lv_charts_builtin_t style, lv_charts_t * copy);
/**********************
* MACROS
**********************/
#endif
#endif

View File

@@ -1,552 +0,0 @@
/**
* @file lv_gauge.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#if USE_LV_GAUGE != 0
#include "lv_gauge.h"
#include <stdio.h>
#include <string.h>
#include "../lv_draw/lv_draw.h"
#include "../lv_misc/text.h"
#include "misc/math/trigo.h"
#include "misc/math/math_base.h"
/*********************
* DEFINES
*********************/
#define LV_GAUGE_DEF_WIDTH (150 * LV_DOWNSCALE)
#define LV_GAUGE_DEF_HEIGHT (150 * LV_DOWNSCALE)
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool lv_gauge_design(lv_obj_t * gauge, const area_t * mask, lv_design_mode_t mode);
static void lv_gauge_draw_scale(lv_obj_t * gauge, const area_t * mask);
static void lv_gauge_draw_needle(lv_obj_t * gauge, const area_t * mask);
static void lv_gauges_init(void);
/**********************
* STATIC VARIABLES
**********************/
static lv_gauges_t lv_gauges_def; /*Default gauge style*/
static lv_design_f_t ancestor_design_f = NULL;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/*-----------------
* Create function
*-----------------*/
/**
* Create a gauge objects
* @param par pointer to an object, it will be the parent of the new gauge
* @param copy pointer to a gauge object, if not NULL then the new object will be copied from it
* @return pointer to the created gauge
*/
lv_obj_t * lv_gauge_create(lv_obj_t * par, lv_obj_t * copy)
{
/*Create the ancestor gauge*/
lv_obj_t * new_gauge = lv_rect_create(par, copy);
dm_assert(new_gauge);
/*Allocate the gauge type specific extended data*/
lv_gauge_ext_t * ext = lv_obj_alloc_ext(new_gauge, sizeof(lv_gauge_ext_t));
dm_assert(ext);
/*Initialize the allocated 'ext' */
ext->min = 0;
ext->max = 100;
ext->needle_num = 1;
ext->low_critical = 0;
ext->values = NULL;
ext->txt = NULL;
if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_f(new_gauge);
/*The signal and design functions are not copied so set them here*/
lv_obj_set_signal_f(new_gauge, lv_gauge_signal);
lv_obj_set_design_f(new_gauge, lv_gauge_design);
/*Init the new gauge gauge*/
if(copy == NULL) {
lv_gauge_set_needle_num(new_gauge, 1);
lv_gauge_set_text(new_gauge, "%d");
lv_obj_set_size(new_gauge, LV_GAUGE_DEF_WIDTH, LV_GAUGE_DEF_HEIGHT);
lv_obj_set_style(new_gauge, lv_gauges_get(LV_GAUGES_DEF, NULL));
}
/*Copy an existing gauge*/
else {
lv_gauge_ext_t * copy_ext = lv_obj_get_ext(copy);
ext->min = copy_ext->min;
ext->max = copy_ext->max;
ext->low_critical = copy_ext->low_critical;
lv_gauge_set_needle_num(new_gauge, lv_gauge_get_needle_num(copy));
lv_gauge_set_text(new_gauge, lv_gauge_get_text(copy));
uint8_t i;
for(i = 0; i < ext->needle_num; i++) {
ext->values[i] = copy_ext->values[i];
}
/*Refresh the style with new signal function*/
lv_obj_refr_style(new_gauge);
}
return new_gauge;
}
/**
* Signal function of the gauge
* @param gauge pointer to a gauge object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return true: the object is still valid (not deleted), false: the object become invalid
*/
bool lv_gauge_signal(lv_obj_t * gauge, lv_signal_t sign, void * param)
{
bool valid;
/* Include the ancient signal function */
valid = lv_rect_signal(gauge, sign, param);
/* The object can be deleted so check its validity and then
* make the object specific signal handling */
if(valid != false) {
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
switch(sign) {
case LV_SIGNAL_CLEANUP:
dm_free(ext->values);
ext->values = NULL;
break;
default:
break;
}
}
return valid;
}
/*=====================
* Setter functions
*====================*/
/**
* Set the number of needles (should be <= LV_GAUGE_MAX_NEEDLE)
* @param gauge pointer to gauge object
* @param num number of needles
*/
void lv_gauge_set_needle_num(lv_obj_t * gauge, uint8_t num)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
if(ext->values != NULL) dm_free(ext->values);
ext->values = dm_alloc(num * sizeof(int16_t));
ext->needle_num = num;
lv_obj_inv(gauge);
}
/**
* Set the range of a gauge
* @param gauge pointer to gauge object
* @param min min value
* @param max max value
*/
void lv_gauge_set_range(lv_obj_t * gauge, int16_t min, int16_t max)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
/*Be sure the smaller value is min and the greater is max*/
ext->min = MATH_MIN(min, max);
ext->max = MATH_MAX(min, max);
lv_obj_inv(gauge);
}
/**
* Set the value of a needle
* @param gauge pointer to gauge
* @param needle the id of the needle
* @param value the new value
*/
void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle, int16_t value)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
if(needle >= ext->needle_num) return;
if(value > ext->max) value = ext->max;
if(value < ext->min) value = ext->min;
ext->values[needle] = value;
lv_obj_inv(gauge);
}
/**
* Set text on a gauge
* @param gauge pinter to a gauge object
* @param txt a printf like format string
* with 1 place for a number (e.g. "Value: %d");
*/
void lv_gauge_set_text(lv_obj_t * gauge, const char * txt)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
if(ext->txt != NULL) dm_free(ext->txt);
ext->txt = dm_alloc(strlen(txt) + 1);
strcpy(ext->txt, txt);
lv_obj_inv(gauge);
}
/**
* Set which value is more critical (lower or higher)
* @param gauge pointer to a gauge object
* @param low false: higher / true: lower value is more critical
*/
void lv_gauge_set_low_critical(lv_obj_t * gauge, bool low)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
ext->low_critical = low == false ? 0 : 1;
lv_obj_inv(gauge);
}
/*=====================
* Getter functions
*====================*/
/**
* Get the number of needles on a gauge
* @param gauge pointer to gauge
* @return number of needles
*/
uint8_t lv_gauge_get_needle_num(lv_obj_t * gauge)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
return ext->needle_num;
}
/**
* Get the value of a needle
* @param gauge pointer to gauge object
* @param needle the id of the needle
* @return the value of the needle [min,max]
*/
int16_t lv_gauge_get_value(lv_obj_t * gauge, uint8_t needle)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
if(needle >= ext->needle_num) return ext->min;
return ext->values[needle];
}
/**
* Get the text of a gauge
* @param gauge pointer to gauge
* @return the set text. (not with the current value)
*/
const char * lv_gauge_get_text(lv_obj_t * gauge)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
return ext->txt;
}
/**
* Get which value is more critical (lower or higher)
* @param gauge pointer to a gauge object
* @param low false: higher / true: lower value is more critical
*/
bool lv_gauge_get_low_critical(lv_obj_t * gauge)
{
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
return ext->low_critical == 0 ? false : true;
}
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_gauges_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_gauges_t style
*/
lv_gauges_t * lv_gauges_get(lv_gauges_builtin_t style, lv_gauges_t * copy)
{
static bool style_inited = false;
/*Make the style initialization if it is not done yet*/
if(style_inited == false) {
lv_gauges_init();
style_inited = true;
}
lv_gauges_t *style_p;
switch(style) {
case LV_GAUGES_DEF:
style_p = &lv_gauges_def;
break;
default:
style_p = &lv_gauges_def;
}
if(copy != NULL) {
if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_gauges_t));
else memcpy(copy, &lv_gauges_def, sizeof(lv_gauges_t));
}
return style_p;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Handle the drawing related tasks of the gauges
* @param gauge pointer to an object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_gauge_design(lv_obj_t * gauge, const area_t * mask, lv_design_mode_t mode)
{
/*Return false if the object is not covers the mask_p area*/
if(mode == LV_DESIGN_COVER_CHK) {
return ancestor_design_f(gauge, mask, mode);
}
/*Draw the object*/
else if(mode == LV_DESIGN_DRAW_MAIN) {
lv_gauges_t * style = lv_obj_get_style(gauge);
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
/* Draw the background
* Re-color the gauge according to the critical value*/
color_t mcolor_min = style->rects.objs.color;
color_t gcolor_min = style->rects.gcolor;
int16_t critical_val = ext->low_critical == 0 ? ext->min : ext->max;
uint8_t i;
for(i = 0; i < ext->needle_num; i++) {
critical_val = ext->low_critical == 0 ? MATH_MAX(critical_val, ext->values[i]) : MATH_MIN(critical_val, ext->values[i]);
}
opa_t ratio = ((critical_val - ext->min) * OPA_COVER) / (ext->max - ext->min);
if(ext->low_critical != 0) ratio = OPA_COVER - ratio;
style->rects.objs.color= color_mix(style->mcolor_critical, mcolor_min, ratio);
style->rects.gcolor = color_mix(style->gcolor_critical, gcolor_min, ratio);
ancestor_design_f(gauge, mask, mode);
style->rects.objs.color= mcolor_min;
style->rects.gcolor = gcolor_min;
lv_gauge_draw_scale(gauge, mask);
lv_gauge_draw_needle(gauge, mask);
}
/*Post draw when the children are drawn*/
else if(mode == LV_DESIGN_DRAW_POST) {
ancestor_design_f(gauge, mask, mode);
}
return true;
}
/**
* Draw the scale on a gauge
* @param gauge pointer to gauge object
* @param mask mask of drawing
*/
static void lv_gauge_draw_scale(lv_obj_t * gauge, const area_t * mask)
{
lv_gauges_t * style = lv_obj_get_style(gauge);
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
char scale_txt[16];
cord_t r = lv_obj_get_width(gauge) / 2 - style->scale_pad;
cord_t x_ofs = lv_obj_get_width(gauge) / 2 + gauge->cords.x1;
cord_t y_ofs = lv_obj_get_height(gauge) / 2 + gauge->cords.y1;
int16_t angle_ofs = 90 + (360 - style->scale_angle) / 2;
uint8_t i;
for(i = 0; i < style->scale_label_num; i++) {
/*Calculate the position a scale label*/
int16_t angle = (i * style->scale_angle) / (style->scale_label_num - 1) + angle_ofs;
cord_t y = (int32_t)((int32_t)trigo_sin(angle) * r) / TRIGO_SIN_MAX;
y += y_ofs;
cord_t x = (int32_t)((int32_t)trigo_sin(angle + 90) * r) / TRIGO_SIN_MAX;
x += x_ofs;
int16_t scale_act = (int32_t)((int32_t)(ext->max - ext->min) * i) / (style->scale_label_num - 1);
scale_act += ext->min;
sprintf(scale_txt, "%d", scale_act);
area_t label_cord;
point_t label_size;
txt_get_size(&label_size, scale_txt, font_get(style->scale_labels.font),
style->scale_labels.letter_space, style->scale_labels.line_space, LV_CORD_MAX);
/*Draw the label*/
label_cord.x1 = x - label_size.x / 2;
label_cord.y1 = y - label_size.y / 2;
label_cord.x2 = label_cord.x1 + label_size.x;
label_cord.y2 = label_cord.y1 + label_size.y;
lv_draw_label(&label_cord, mask, &style->scale_labels, OPA_COVER, scale_txt);
}
/*Calculate the critical value*/
int16_t critical_value = ext->low_critical == 0 ? ext->min : ext->max;;
for(i = 0; i < ext->needle_num; i++) {
critical_value = ext->low_critical == 0 ?
MATH_MAX(critical_value, ext->values[i]) : MATH_MIN(critical_value, ext->values[i]);
}
/*Write the critical value if enabled*/
if(ext->txt[0] != '\0') {
char value_txt[16];
sprintf(value_txt, ext->txt, critical_value);
area_t label_cord;
point_t label_size;
txt_get_size(&label_size, value_txt, font_get(style->value_labels.font),
style->value_labels.letter_space, style->value_labels.line_space, LV_CORD_MAX);
/*Draw the label*/
label_cord.x1 = gauge->cords.x1 + lv_obj_get_width(gauge) / 2 - label_size.x / 2;
label_cord.y1 = gauge->cords.y1 +
(cord_t)style->value_pos * lv_obj_get_height(gauge) / 100 - label_size.y / 2;
label_cord.x2 = label_cord.x1 + label_size.x;
label_cord.y2 = label_cord.y1 + label_size.y;
lv_draw_label(&label_cord, mask, &style->value_labels, OPA_COVER, value_txt);
}
}
/**
* Draw the needles of a gauge
* @param gauge pointer to gauge object
* @param mask mask of drawing
*/
static void lv_gauge_draw_needle(lv_obj_t * gauge, const area_t * mask)
{
lv_gauges_t * style = lv_obj_get_style(gauge);
lv_gauge_ext_t * ext = lv_obj_get_ext(gauge);
cord_t r = lv_obj_get_width(gauge) / 2 - style->scale_pad;
cord_t x_ofs = lv_obj_get_width(gauge) / 2 + gauge->cords.x1;
cord_t y_ofs = lv_obj_get_height(gauge) / 2 + gauge->cords.y1;
int16_t angle_ofs = 90 + (360 - style->scale_angle) / 2;
point_t p_mid;
point_t p_end;
uint8_t i;
p_mid.x = x_ofs;
p_mid.y = y_ofs;
for(i = 0; i < ext->needle_num; i++) {
/*Calculate the end point of a needle*/
int16_t needle_angle = (ext->values[i] - ext->min) * style->scale_angle /
(ext->max - ext->min) + angle_ofs;
p_end.y = (trigo_sin(needle_angle) * r) / TRIGO_SIN_MAX + y_ofs;
p_end.x = (trigo_sin(needle_angle + 90) * r) / TRIGO_SIN_MAX + x_ofs;
/*Draw the needle with the corresponding color*/
style->needle_lines.objs.color = style->needle_color[i];
lv_draw_line(&p_mid, &p_end, mask, &style->needle_lines, style->needle_opa);
}
/*Draw the needle middle area*/
lv_rects_t nm;
area_t nm_cord;
lv_rects_get(LV_RECTS_DEF, &nm);
nm.bwidth = 0;
nm.round = LV_RECT_CIRCLE;
nm.objs.color = style->needle_mid_color;
nm.gcolor = style->needle_mid_color;
nm_cord.x1 = x_ofs - style->needle_mid_r;
nm_cord.y1 = y_ofs - style->needle_mid_r;
nm_cord.x2 = x_ofs + style->needle_mid_r;
nm_cord.y2 = y_ofs + style->needle_mid_r;
lv_draw_rect(&nm_cord, mask, &nm, OPA_100);
}
/**
* Initialize the built-in gauge styles
*/
static void lv_gauges_init(void)
{
/*Default style*/
lv_rects_get(LV_RECTS_DEF, &lv_gauges_def.rects);
lv_gauges_def.rects.round = LV_RECT_CIRCLE;
lv_gauges_def.rects.bwidth = 4 * LV_DOWNSCALE;
lv_gauges_def.rects.objs.color = COLOR_MAKE(0x00, 0xaa, 0x00);//GREEN;
lv_gauges_def.rects.gcolor = COLOR_BLACK;
lv_gauges_def.rects.bcolor = COLOR_BLACK;
lv_gauges_def.gcolor_critical = COLOR_BLACK;
lv_gauges_def.mcolor_critical = COLOR_MAKE(0xff, 0x50, 0x50);
lv_labels_get(LV_LABELS_DEF, &lv_gauges_def.scale_labels);
lv_gauges_def.scale_labels.objs.color = COLOR_MAKE(0xd0, 0xd0, 0xd0);
lv_labels_get(LV_LABELS_DEF, &lv_gauges_def.value_labels);
lv_gauges_def.value_labels.objs.color = COLOR_WHITE;
lv_gauges_def.value_labels.letter_space = 3 * LV_DOWNSCALE;
lv_gauges_def.value_labels.mid = 1;
lv_gauges_def.value_pos = 75;
lv_lines_get(LV_LINES_DEF, &lv_gauges_def.needle_lines);
lv_gauges_def.needle_lines.objs.color = COLOR_WHITE;
lv_gauges_def.needle_lines.width = 3 * LV_DOWNSCALE;
lv_gauges_def.needle_color[0] = COLOR_SILVER;
lv_gauges_def.needle_color[1] = COLOR_MAKE(0x40, 0x90, 0xe0);
lv_gauges_def.needle_color[2] = COLOR_MAKE(0x50, 0xe0, 0x50);
lv_gauges_def.needle_color[3] = COLOR_MAKE(0xff, 0xff, 0x70);
lv_gauges_def.needle_mid_r = 5 * LV_DOWNSCALE;
lv_gauges_def.needle_mid_color = COLOR_GRAY;
lv_gauges_def.needle_opa = OPA_80;
lv_gauges_def.scale_pad = 20 * LV_DOWNSCALE;
lv_gauges_def.scale_label_num = 6;
lv_gauges_def.scale_angle = 220;
}
#endif

View File

@@ -1,193 +0,0 @@
/**
* @file lv_gauge.h
*
*/
#ifndef LV_GAUGE_H
#define LV_GAUGE_H
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#include "misc_conf.h"
#if USE_LV_GAUGE != 0
/*Testing of dependencies*/
#if USE_LV_RECT == 0
#error "lv_gauge: lv_rect is required. Enable it in lv_conf.h (USE_LV_RECT 1) "
#endif
#if USE_LV_LABEL == 0
#error "lv_gauge: lv_label is required. Enable it in lv_conf.h (USE_LV_LABEL 1) "
#endif
#if USE_LV_RECT == 0
#error "lv_gauge: lv_line is required. Enable it in lv_conf.h (USE_LV_LINE 1) "
#endif
#if USE_TRIGO == 0
#error "lv_gauge: trigo is required. Enable it in misc_conf.h (USE_TRIGO 1) "
#endif
#include "../lv_obj/lv_obj.h"
#include "lv_rect.h"
#include "lv_label.h"
#include "lv_line.h"
/*********************
* DEFINES
*********************/
#define LV_GAUGE_MAX_NEEDLE 4 /*Max number of needles. Used in the style.*/
/**********************
* TYPEDEFS
**********************/
/*Data of gauge*/
typedef struct
{
lv_rect_ext_t rect; /*Ext. of ancestor*/
/*New data for this type */
int16_t min; /*Minimum value of the scale*/
int16_t max; /*Maximum value of the scale*/
int16_t * values; /*Array of the set values (for needles) */
char * txt; /*Printf-like text to display with the most critical value (e.g. "Value: %d")*/
uint8_t needle_num; /*Number of needles*/
uint8_t low_critical :1; /*0: the higher value is more critical, 1: the lower value is more critical*/
}lv_gauge_ext_t;
/*Style of gauge*/
typedef struct
{
lv_rects_t rects; /*Style of ancestor*/
/*New style element for this type */
color_t mcolor_critical; /*Top color at critical.*/
color_t gcolor_critical; /*Bottom color at critical*/
/*Scale settings*/
uint16_t scale_angle; /*Angle of the scale in deg. (~220)*/
lv_labels_t scale_labels; /*Style of the scale labels*/
cord_t scale_pad; /*Padding of scale labels from the edge*/
uint8_t scale_label_num; /*Number of scale labels (~6)*/
/*Needle settings*/
lv_lines_t needle_lines; /*Style of neddles*/
color_t needle_color[LV_GAUGE_MAX_NEEDLE]; /*Color of needles*/
color_t needle_mid_color; /*Color of middle where the needles start*/
cord_t needle_mid_r; /*Radius of the needle middle area*/
opa_t needle_opa; /*Opacity of the needles*/
/*Value text settings*/
lv_labels_t value_labels; /*Style of the value label*/
uint8_t value_pos; /*Vertical position of the value label in percentage of object height (0..100 %)*/
}lv_gauges_t;
/*Built-in styles of gauge*/
typedef enum
{
LV_GAUGES_DEF,
}lv_gauges_builtin_t;
/**********************
* GLOBAL PROTOTYPES
**********************/
/**
* Create a gauge objects
* @param par pointer to an object, it will be the parent of the new gauge
* @param copy pointer to a gauge object, if not NULL then the new object will be copied from it
* @return pointer to the created gauge
*/
lv_obj_t * lv_gauge_create(lv_obj_t * par, lv_obj_t * copy);
/**
* Signal function of the gauge
* @param gauge pointer to a gauge object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return true: the object is still valid (not deleted), false: the object become invalid
*/
bool lv_gauge_signal(lv_obj_t * gauge, lv_signal_t sign, void * param);
/**
* Set the number of needles (should be <= LV_GAUGE_MAX_NEEDLE)
* @param gauge pointer to gauge object
* @param num number of needles
*/
void lv_gauge_set_needle_num(lv_obj_t * gauge, uint8_t num);
/**
* Set the range of a gauge
* @param gauge pointer to gauge object
* @param min min value
* @param max max value
*/
void lv_gauge_set_range(lv_obj_t * gauge, int16_t min, int16_t max);
/**
* Set the value of a needle
* @param gauge pointer to gauge
* @param needle the id of the needle
* @param value the new value
*/
void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle, int16_t value);
/**
* Set text on a gauge
* @param gauge pinter to a gauge object
* @param txt a printf like format string
* with 1 place for a number (e.g. "Value: %d");
*/
void lv_gauge_set_text(lv_obj_t * gauge, const char * txt);
/**
* Set which value is more critical (lower or higher)
* @param gauge pointer to a gauge object
* @param low false: higher / true: lower value is more critical
*/
void lv_gauge_set_low_critical(lv_obj_t * gauge, bool low);
/**
* Get the number of needles on a gauge
* @param gauge pointer to gauge
* @return number of needles
*/
uint8_t lv_gauge_get_needle_num(lv_obj_t * gauge);
/**
* Get the value of a needle
* @param gauge pointer to gauge object
* @param needle the id of the needle
* @return the value of the needle [min,max]
*/
int16_t lv_gauge_get_value(lv_obj_t * gauge, uint8_t needle);
/**
* Get the text of a gauge
* @param gauge pointer to gauge
* @return the set text. (not with the current value)
*/
const char * lv_gauge_get_text(lv_obj_t * gauge);
/**
* Get which value is more critical (lower or higher)
* @param gauge pointer to a gauge object
* @param low false: higher / true: lower value is more critical
*/
bool lv_gauge_get_low_critical(lv_obj_t * gauge);
/**
* Return with a pointer to a built-in style and/or copy it to a variable
* @param style a style name from lv_gauges_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_gauges_t style
*/
lv_gauges_t * lv_gauges_get(lv_gauges_builtin_t style, lv_gauges_t * copy);
/**********************
* MACROS
**********************/
#endif
#endif

View File

@@ -1,429 +0,0 @@
/**
* @file lv_img.c
*
*/
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#include "misc_conf.h"
#if USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0
#include "lv_img.h"
#include "../lv_draw/lv_draw.h"
#include "misc/fs/fsint.h"
#include "misc/fs/ufs/ufs.h"
#if LV_IMG_ENABLE_SYMBOLS != 0
#include "../lv_misc/text.h"
#endif
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
static bool lv_img_design(lv_obj_t * img, const area_t * mask, lv_design_mode_t mode);
static void lv_imgs_init(void);
static bool lv_img_is_symbol(const char * txt);
/**********************
* STATIC VARIABLES
**********************/
static lv_imgs_t lv_imgs_def;
static lv_imgs_t lv_imgs_light;
static lv_imgs_t lv_imgs_dark;
/**********************
* MACROS
**********************/
/**********************
* GLOBAL FUNCTIONS
**********************/
/**
* Create an image objects
* @param par pointer to an object, it will be the parent of the new button
* @param copy pointer to a rectangle object, if not NULL then the new object will be copied from it
* @return pointer to the created image
*/
lv_obj_t * lv_img_create(lv_obj_t * par, lv_obj_t * copy)
{
lv_obj_t * new_img = NULL;
/*Create a basic object*/
new_img = lv_obj_create(par, copy);
dm_assert(new_img);
/*Extend the basic object to image object*/
lv_img_ext_t * ext = lv_obj_alloc_ext(new_img, sizeof(lv_img_ext_t));
dm_assert(ext);
ext->fn = NULL;
ext->w = lv_obj_get_width(new_img);
ext->h = lv_obj_get_height(new_img);
ext->transp = 0;
ext->upscale = 0;
/*Init the new object*/
lv_obj_set_signal_f(new_img, lv_img_signal);
lv_obj_set_design_f(new_img, lv_img_design);
if(copy == NULL) {
/* Enable auto size for non screens
* because image screens are wallpapers
* and must be screen sized*/
if(par != NULL) ext->auto_size = 1;
else ext->auto_size = 0;
lv_obj_set_style(new_img, lv_imgs_get(LV_IMGS_DEF, NULL));
} else {
ext->auto_size = lv_img_get_auto_size(copy);
lv_img_set_file(new_img, LV_EA(copy, lv_img_ext_t)->fn);
/*Refresh the style with new signal function*/
lv_obj_refr_style(new_img);
}
return new_img;
}
/**
* Signal function of the image
* @param img pointer to animage object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
*/
bool lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param)
{
bool valid = true;
/* Include the ancient signal function */
valid = lv_obj_signal(img, sign, param);
/* The object can be deleted so check its validity and then
* make the object specific signal handling */
if(valid != false) {
lv_img_ext_t * img_p = lv_obj_get_ext(img);
switch(sign) {
case LV_SIGNAL_CLEANUP:
dm_free(img_p->fn);
break;
default:
break;
}
}
return valid;
}
/**
* Return with a pointer to built-in style and/or copy it to a variable
* @param style a style name from lv_imgs_builtin_t enum
* @param copy copy the style to this variable. (NULL if unused)
* @return pointer to an lv_imgs_t style
*/
lv_imgs_t * lv_imgs_get(lv_imgs_builtin_t style, lv_imgs_t * copy)
{
static bool style_inited = false;
/*Make the style initialization if it is not done yet*/
if(style_inited == false) {
lv_imgs_init();
style_inited = true;
}
lv_imgs_t * style_p;
switch(style) {
case LV_IMGS_DEF:
style_p = &lv_imgs_def;
break;
case LV_IMGS_LIGHT:
style_p = &lv_imgs_light;
break;
case LV_IMGS_DARK:
style_p = &lv_imgs_dark;
break;
default:
style_p = &lv_imgs_def;
}
if(copy != NULL) {
if(style_p != NULL) memcpy(copy, style_p, sizeof(lv_imgs_t));
else memcpy(copy, &lv_imgs_def, sizeof(lv_imgs_t));
}
return style_p;
}
/**
* Create a file to the RAMFS from a picture data
* @param fn file name of the new file (e.g. "pic1", will be available at "U:/pic1")
* @param data pointer to a color map with lv_img_raw_header_t header
* @return result of the file operation. FS_RES_OK or any error from fs_res_t
*/
fs_res_t lv_img_create_file(const char * fn, const color_int_t * data)
{
const lv_img_raw_header_t * raw_p = (lv_img_raw_header_t *) data;
fs_res_t res;
res = ufs_create_const(fn, data, raw_p->w * raw_p->h * sizeof(color_t) + sizeof(lv_img_raw_header_t));
return res;
}
/*=====================
* Setter functions
*====================*/
/**
* Set a file to the image
* @param img pointer to an image object
* @param fn file name in the RAMFS to set as picture (e.g. "U:/pic1").
*/
void lv_img_set_file(lv_obj_t * img, const char * fn)
{
lv_img_ext_t * ext = lv_obj_get_ext(img);
/*Handle normal images*/
if(lv_img_is_symbol(fn) == false) {
fs_file_t file;
fs_res_t res;
lv_img_raw_header_t header;
uint32_t rn;
res = fs_open(&file, fn, FS_MODE_RD);
if(res == FS_RES_OK) {
res = fs_read(&file, &header, sizeof(header), &rn);
}
/*Create a dummy header on fs error*/
if(res != FS_RES_OK || rn != sizeof(header)) {
header.w = lv_obj_get_width(img);
header.h = lv_obj_get_height(img);
header.transp = 0;
}
fs_close(&file);
ext->w = header.w;
ext->h = header.h;
ext->transp = header.transp;
if(ext->upscale != 0) {
ext->w *= 2;
ext->h *= 2;
}
}
/*Handle symbol texts*/
else {
#if LV_IMG_ENABLE_SYMBOLS
lv_imgs_t * imgs = lv_obj_get_style(img);
point_t size;
txt_get_size(&size, fn, font_get(imgs->sym_font), 0, 0, LV_CORD_MAX);
ext->w = size.x;
ext->h = size.y;
ext->transp = 0;
#else
/*Never goes here, just to be sure handle this */
ext->w = lv_obj_get_width(img);
ext->h = lv_obj_get_height(img);
ext->transp = 0;
#endif
}
if(ext->upscale != 0) {
ext->w *= LV_DOWNSCALE;
ext->h *= LV_DOWNSCALE;
}
if(fn != NULL) {
ext->fn = dm_realloc(ext->fn, strlen(fn) + 1);
strcpy(ext->fn, fn);
} else {
ext->fn = NULL;
}
if(lv_img_get_auto_size(img) != false) {
lv_obj_set_size(img, ext->w, ext->h);
}
lv_obj_inv(img);
}
/**
* Enable the auto size feature.
* If enabled the object size will be same as the picture size.
* @param img pointer to an image
* @param en true: auto size enable, false: auto size disable
*/
void lv_img_set_auto_size(lv_obj_t * img, bool en)
{
lv_img_ext_t * ext = lv_obj_get_ext(img);
ext->auto_size = (en == false ? 0 : 1);
}
/**
* Enable the upscaling with LV_DOWNSCALE.
* If enabled the object size will be same as the picture size.
* @param img pointer to an image
* @param en true: upscale enable, false: upscale disable
*/
void lv_img_set_upscale(lv_obj_t * img, bool en)
{
lv_img_ext_t * ext = lv_obj_get_ext(img);
ext->upscale = (en == false ? 0 : 1);
/*Refresh the image with the new size*/
lv_img_set_file(img, ext->fn);
}
/*=====================
* Getter functions
*====================*/
/**
* Get the auto size enable attribute
* @param img pointer to an image
* @return true: auto size is enabled, false: auto size is disabled
*/
bool lv_img_get_auto_size(lv_obj_t * img)
{
lv_img_ext_t * ext = lv_obj_get_ext(img);
return ext->auto_size == 0 ? false : true;
}
/**
* Get the upscale enable attribute
* @param img pointer to an image
* @return true: upscale is enabled, false: upscale is disabled
*/
bool lv_img_get_upscale(lv_obj_t * img)
{
lv_img_ext_t * ext = lv_obj_get_ext(img);
return ext->upscale == 0 ? false : true;
}
/**********************
* STATIC FUNCTIONS
**********************/
/**
* Handle the drawing related tasks of the images
* @param img pointer to an object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_img_design(lv_obj_t * img, const area_t * mask, lv_design_mode_t mode)
{
lv_imgs_t * imgs_p = lv_obj_get_style(img);
lv_img_ext_t * ext = lv_obj_get_ext(img);
if(mode == LV_DESIGN_COVER_CHK) {
if(ext->transp == 0) {
bool cover;
cover = area_is_in(mask, &img->cords);
return cover;
}
else return false;
} else if(mode == LV_DESIGN_DRAW_MAIN) {
if(ext->h == 0 || ext->w == 0) return true;
area_t cords;
/*Create a default style for symbol texts*/
#if LV_IMG_ENABLE_SYMBOLS != 0
bool sym = lv_img_is_symbol(ext->fn);
lv_labels_t sym_style;
lv_labels_get(LV_LABELS_DEF, &sym_style);
sym_style.font = imgs_p->sym_font;
sym_style.letter_space = 0;
sym_style.line_space = 0;
sym_style.mid = 0;
sym_style.objs.color = imgs_p->objs.color;
#endif
lv_obj_get_cords(img, &cords);
opa_t opa = lv_obj_get_opa(img);
area_t cords_tmp;
cords_tmp.y1 = cords.y1;
cords_tmp.y2 = cords.y1 + ext->h - 1;
for(; cords_tmp.y1 < cords.y2; cords_tmp.y1 += ext->h, cords_tmp.y2 += ext->h) {
cords_tmp.x1 = cords.x1;
cords_tmp.x2 = cords.x1 + ext->w - 1;
for(; cords_tmp.x1 < cords.x2; cords_tmp.x1 += ext->w, cords_tmp.x2 += ext->w) {
#if LV_IMG_ENABLE_SYMBOLS == 0
lv_draw_img(&cords_tmp, mask, imgs_p, opa, ext->fn);
#else
if(sym == false) lv_draw_img(&cords_tmp, mask, imgs_p, opa, ext->fn);
else lv_draw_label(&cords_tmp, mask, &sym_style, opa, ext->fn);
#endif
}
}
}
return true;
}
/**
* From the settings in lv_conf.h and the file name
* tells it a filename or a symbol text.
* @param txt a file name (e.g. "U:/file1") or a symbol (e.g. SYMBOL_OK)
* @return true: 'txt' is a symbol text, false: 'txt' is a file name
*/
static bool lv_img_is_symbol(const char * txt)
{
/*If the symbols are not enabled always tell false*/
#if LV_IMG_ENABLE_SYMBOLS == 0
return false;
#endif
/* if txt begins with an upper case letter then it refers to a driver
* so it is a file name*/
if(txt[0] >= 'A' && txt[0] <= 'Z') return false;
/*If not returned during the above tests then it is symbol text*/
return true;
}
/**
* Initialize the image styles
*/
static void lv_imgs_init(void)
{
/*Default style*/
lv_imgs_def.objs.color = COLOR_BLACK;
lv_imgs_def.recolor_opa = OPA_TRANSP;
#if LV_IMG_ENABLE_SYMBOLS != 0
lv_imgs_def.sym_font = LV_IMG_DEF_SYMBOL_FONT;
#endif
/*Dark style*/
memcpy(&lv_imgs_dark, &lv_imgs_def, sizeof(lv_imgs_t));
lv_imgs_dark.objs.color = COLOR_BLACK; lv_imgs_dark.recolor_opa = OPA_50;
/*Light style*/
memcpy(&lv_imgs_light, &lv_imgs_dark, sizeof(lv_imgs_t));
lv_imgs_light.objs.color = COLOR_WHITE; lv_imgs_light.recolor_opa = OPA_50;
}
#endif

Some files were not shown because too many files have changed in this diff Show More