Compare commits

...
217 Commits
Author SHA1 Message Date
Vincent Wei 38aa40042c release version 4.0.2 2019-10-31 11:29:24 +08:00
Vincent Wei 991472894b tune configure output 2019-10-24 17:33:45 +08:00
Vincent Wei ca249ba378 change version to 4.0.2 2019-10-24 17:27:51 +08:00
Vincent Wei 04adac288f change version to 4.0.2 2019-10-24 17:26:08 +08:00
Vincent Wei fcd401128c add configure options for RT-Thread, RTEMS, FreeRTOS 2019-10-24 17:24:37 +08:00
Vincent Wei 067df2ea37 tune for minigui-docs 2019-10-23 19:08:03 +08:00
Vincent Wei c47dad1ad5 restore build/rules-pc.linux and fix errors in makefile.ng files 2019-10-18 16:56:05 +08:00
Vincent Wei 28d907165f remove standalone option 2019-10-17 16:41:36 +08:00
Vincent Wei 8a8cdd18ed tune readme 2019-07-29 16:34:33 +08:00
Vincent Wei 2e5a8804bf tune api desc 2019-07-29 10:03:27 +08:00
Vincent Wei 173171b653 use -1 instead of 0xFFFFFFFF for ON_UPDSECDC_DONOTHING; chang return type of GetGDCapability to Uint32 2019-07-26 12:07:32 +08:00
Vincent Wei b4e46463cd remove _DEBUG 2019-07-19 15:49:16 +08:00
Vincent Wei d7c818080c libdrm does not need udev 2019-07-19 15:32:08 +08:00
Vincent Wei c03ed8d23a change version 2019-07-19 14:56:58 +08:00
Vincent Wei f965c4b8ea notes for ver-4-0-1 2019-07-19 14:45:24 +08:00
Vincent Wei 3710611ebd restore GetResPath 2019-07-19 14:08:08 +08:00
VincentWei d50c5c25ed use %zu instead of %lu for size_t values 2019-07-19 12:23:54 +08:00
Vincent Wei b7820d888f use DWORD for RES_KEY 2019-07-19 11:21:54 +08:00
Vincent Wei a068f25519 use FNV 1a algrithm for Str2Key 2019-07-19 11:11:34 +08:00
Vincent Wei f6ad9a960e cleanup 2019-07-18 14:59:12 +08:00
Vincent Wei 29a6e0f0f9 tune api desc 2019-07-18 12:44:24 +08:00
Vincent Wei 868548cf0d fix typos 2019-07-17 17:23:14 +08:00
Vincent Wei a9daa05807 - [Overview](#overview) 2019-07-17 17:22:41 +08:00
Vincent Wei 5e0500411e struct description for _DriDriverOps 2019-07-16 11:36:27 +08:00
Vincent Wei 717fbd6fee tune for version 4.0.0 2019-07-15 15:46:43 +08:00
Vincent Wei 53c77a9a73 prepend excpetion list statement 2019-07-15 14:17:20 +08:00
Vincent Wei e256fb2a0a restore timer thread 2019-07-14 17:17:40 +08:00
Vincent Wei ce29edbca6 disable timer thread for MiniGUI-Threads 2019-07-14 17:08:36 +08:00
Vincent Wei 3a37407982 cleanup for MiniGUI-Processes 2019-07-14 16:38:03 +08:00
Vincent Wei 3d0e33d2b3 Use ENTER_DRAWING_NOCHECK for BitBlt 2019-07-14 15:26:53 +08:00
Vincent Wei 8040f7abd5 __mg_time -> mg_os_time; __mg_mktime -> __mg_os_mktime; __mg_localtime -> __mg_os_localtime; use clock_gettime for tick count instead of gettimeofday 2019-07-14 14:21:40 +08:00
Vincent Wei 7e1e59a40b tune 2019-07-12 17:36:53 +08:00
Vincent Wei d6cbed96bc tune format 2019-07-12 17:25:56 +08:00
Vincent Wei 8adabc5917 Do not send MSG_NCPAINT when calling UpdateInvalidateRect 2019-07-12 17:13:56 +08:00
Vincent Wei 11950343df two new non-posix functions: __mg_os_start_time and __mg_os_get_time, and use __mg_os_get_time to implement GetTickCount for MiniGUI Standalone runmode 2019-07-12 16:38:16 +08:00
Vincent Wei c7201cbde1 Merge branch 'master' of gitlab.fmsoft.cn:VincentWei/minigui 2019-07-11 19:35:44 +08:00
Vincent Wei fd67781384 use DRM pixel format to define the pixel format surface 2019-07-11 19:34:43 +08:00
Vincent Wei 93101e6eed clear GAL_HWACCEL flag if check_blit retruns non-zero 2019-07-11 16:35:42 +08:00
Vincent Wei 3494e3d496 cleanup 2019-07-11 15:11:56 +08:00
Vincent Wei 5138402296 tune DriDriverOps to use DriSurfaceBuffer* for mapped surface buffer 2019-07-11 12:38:10 +08:00
Vincent Wei f324e2a1b6 tune release notes 2019-07-08 18:18:32 +08:00
Vincent Wei 36d5500a31 use DriPixelFormat when creating hardware buffer 2019-07-08 17:31:19 +08:00
Vincent Wei 61819fd832 Windows 2019-07-08 12:03:52 +08:00
Vincent Wei a2cd26ea99 DRM -> DRI 2019-07-05 12:47:00 +08:00
Vincent Wei f4af247b15 DRM -> DRI 2019-07-05 12:41:54 +08:00
Vincent Wei aa9bb68ad9 tune release notes 2019-07-04 18:43:12 +08:00
gengyue 5e8b27b810 solved some memery error 2019-07-04 18:39:16 +08:00
Vincent Wei 5f22485ed5 cleanup 2019-07-04 14:14:01 +08:00
Vincent Wei 06b90939c4 tune drm video engine for acclerated graphics 2019-07-03 12:17:21 +08:00
Vincent Wei 5e65422a28 tune 2019-07-03 08:42:26 +08:00
Vincent Wei ca98e4de5b show target name 2019-07-03 08:41:24 +08:00
Vincent Wei 46ed039e84 use a larger buffer 2019-07-02 14:30:16 +08:00
Vincent Wei d2701bac10 fix a minor bug 2019-07-02 11:58:20 +08:00
Vincent Wei ac6ebea61f clean extra input message before calling ial_wait_event 2019-07-02 11:52:30 +08:00
Vincent Wei 80f5ab49ce tune code for MiniGUI-Standalone runmode 2019-07-02 11:34:34 +08:00
Vincent Wei 59f97d7de0 tune for gcc 4.8 2019-06-25 17:42:50 +08:00
Vincent Wei d24fa1c8e5 just skip alpha component for RGBA format 2019-06-23 12:34:38 +08:00
Vincent Wei 775b7586d6 enhance __mg_load_jpg to support any type of MG_RWops 2019-06-23 12:30:43 +08:00
Vincent Wei 485b329737 tune 2019-06-20 16:39:07 +08:00
Vincent Wei 2cb7f7b08f fix typos 2019-06-20 11:38:10 +08:00
Vincent Wei 1a948f71d5 describe support for DRI and extra input messages 2019-06-20 11:29:57 +08:00
Vincent Wei 67ba6dc63d on the webpage -> in the webpage 2019-06-20 10:31:59 +08:00
Vincent Wei 52753ac730 fix typos 2019-06-19 14:00:05 +08:00
Vincent Wei 92acd5b204 update 2019-06-19 12:18:34 +08:00
Vincent Wei 58849e4b5a tune format 2019-06-19 11:54:30 +08:00
Vincent Wei d285256317 exception list 2019-06-19 11:53:47 +08:00
Vincent Wei 31b33c39c3 debug random IAL engine 2019-06-18 18:46:31 +08:00
Vincent Wei a5319df211 fix some bad documents for MSG_EXIN_XXX 2019-06-18 18:46:12 +08:00
Vincent Wei ee1cb96ec1 keys for random IAL engine 2019-06-18 18:45:55 +08:00
Vincent Wei d1b8c90b13 implementation of random IAL engine for mouse, keyboard, button, single_touch, gesture 2019-06-18 16:43:30 +08:00
Vincent Wei d503b340e0 handle KS_LEFTMETA and KS_RIGHTMETA 2019-06-17 15:16:41 +08:00
Vincent Wei 2a9549a138 add KS_LEFTMETA, KS_RIGHTMETA, and KS_META 2019-06-17 15:16:03 +08:00
Vincent Wei acb9b95bc6 implementation of random IAL engine 2019-06-17 12:34:16 +08:00
Vincent Wei 60f07ae26a move GetTickCount from window.h to minigui.h 2019-06-17 12:33:54 +08:00
Vincent Wei 77c4db5e2b framework of new random enigne 2019-06-16 18:50:15 +08:00
Vincent Wei 421ffea9c5 tune 2019-06-16 17:35:15 +08:00
Vincent Wei 57d8eb5237 section for enhanced random engine 2019-06-16 17:35:03 +08:00
Vincent Wei 799ff54869 description for two new engines: drm and libinput 2019-06-16 17:34:42 +08:00
Vincent Wei d6ee29ae11 fix some doc for messages 2019-06-14 18:58:46 +08:00
Vincent Wei 8dabf82a51 cleanup 2019-06-14 15:51:41 +08:00
Vincent Wei 237112bfe9 Implementation of GAL_SuspendVideo and GAL_ResumeVideo 2019-06-14 15:51:24 +08:00
Vincent Wei c445b5a80d Suspend and Resume methods 2019-06-14 15:50:37 +08:00
Vincent Wei 80773ab228 GAL_SuspendVideo and GAL_ResumeVideo 2019-06-14 15:50:11 +08:00
Vincent Wei 3f0ada1ee2 call GAL_SuspendVideo and GAL_ResumeVideo for VT switch 2019-06-14 15:49:53 +08:00
Vincent Wei e45b4ccad8 use LeftALT+LeftCTRL+Fx to switch virtual terminal 2019-06-14 15:49:19 +08:00
Vincent Wei fcb43eccb2 call treat_longpress when checking KS_REPEAT 2019-06-14 11:20:58 +08:00
Vincent Wei 111254b440 change DEF_LPRESS_TIME to 200 2019-06-14 11:20:20 +08:00
Vincent Wei 9f60ba7138 post MSG_EXIN_END_CHANGES message 2019-06-14 11:01:24 +08:00
Vincent Wei d2e0559bdf emulate mouse move and lbutton down for tablet tool 2019-06-14 11:01:03 +08:00
Vincent Wei 55b1934642 tune and cleanup 2019-06-14 10:13:04 +08:00
Vincent Wei 6a31f83a23 interfaces for Linux TTY 2019-06-14 10:12:37 +08:00
Vincent Wei fbe779b195 operators for Linux TTY 2019-06-14 10:12:17 +08:00
Vincent Wei f4e597d5d0 rename to have linux- prefix 2019-06-14 10:11:48 +08:00
Vincent Wei cf2ae944b7 special hande extra input messages in desktop procedure 2019-06-13 18:35:56 +08:00
Vincent Wei a9d7effc11 tune format 2019-06-13 18:00:20 +08:00
Vincent Wei 88771efb41 tune the default message queue length to 32 2019-06-13 18:00:02 +08:00
Vincent Wei 4a354b94f9 implementation of all extra input events 2019-06-13 17:50:30 +08:00
Vincent Wei 047ab34a98 handle extra input events in low-level event loop 2019-06-13 17:50:07 +08:00
Vincent Wei 83660e0d45 implementation of extra input events for touch and gesture 2019-06-13 12:35:44 +08:00
Vincent Wei 352a8cb158 add definitions of MSG_EXIN_XXX 2019-06-13 12:35:12 +08:00
Vincent Wei 85ba11cdd6 remove INPUT.mdev 2019-06-13 12:34:49 +08:00
Vincent Wei c9448ef4c6 Handle extra input events 2019-06-13 12:34:26 +08:00
Vincent Wei 2375100fd7 inline implementation of IAL_WaitEvent 2019-06-13 12:34:02 +08:00
Vincent Wei ebca4834a3 Tune INPUT structure: remove mdev and add wait_event_ex 2019-06-13 12:33:38 +08:00
Vincent Wei 34a007815b remove extra spaces after message name 2019-06-13 09:20:11 +08:00
Vincent Wei 50fcc2afc9 handle middle mouse button events 2019-06-12 19:08:24 +08:00
Vincent Wei 22cf10c508 handle mouse moved 2019-06-12 18:06:41 +08:00
Vincent Wei 51b0e704d7 cleanup 2019-06-12 18:06:22 +08:00
Vincent Wei da0cc99e7f cleanup 2019-06-12 18:06:13 +08:00
Vincent Wei c08a44638c Call IAL_SetMouseRange after initialized 2019-06-12 18:06:01 +08:00
Vincent Wei 9cc9e274cd handle more events 2019-06-12 17:48:08 +08:00
Vincent Wei 069c3eea17 cleanup 2019-06-12 17:47:49 +08:00
Vincent Wei 24381b4cb1 Add messages for middle mouse button: MSG_MBUTTONxxx and MSG_NCMBUTTONxxx;
Add messages for extra input events: MSG_EXIN_XXXX for pointer axis, generic button, touch, tablet, tablet pad, and switch.
2019-06-12 17:45:37 +08:00
Vincent Wei 5e362a9afb handle keyboard event 2019-06-12 12:33:32 +08:00
Vincent Wei 8a3437d948 change NR_KEYS to 250 2019-06-12 12:33:20 +08:00
Vincent Wei 4c2a8e7cc5 define more SCANCODE_xxxx and change NR_KEYS to 250 2019-06-12 12:32:45 +08:00
Vincent Wei b615321745 rename 2019-06-12 09:03:09 +08:00
Vincent Wei 8c81845eba change IAL engine of evdev to libinput 2019-06-11 18:39:26 +08:00
Vincent Wei e7913edc7e tuen implementation of dumb framebuffer 2019-06-11 17:02:48 +08:00
Vincent Wei d777055154 GAL_VideoModeOK returns Ok when the size requested are smaller than any mode available 2019-06-11 17:01:10 +08:00
Vincent Wei bbbff5bd8c Dumb buffer is almost ok 2019-06-11 15:33:30 +08:00
Vincent Wei 046353b9cb cleanup to use DrmVideoData for mode_list 2019-06-11 12:19:40 +08:00
Vincent Wei 06066b47b5 helpers for DRM mode setting 2019-06-10 18:25:58 +08:00
Vincent Wei 4f263517bb Source files for EvDev IAL engine 2019-06-10 18:25:03 +08:00
Vincent Wei 50afdc7826 add null implementation for EvDev IAL engine 2019-06-10 18:24:16 +08:00
Vincent Wei b282a7773d give mdev and mtype default values when they are not defined in ETC 2019-06-10 18:18:49 +08:00
Vincent Wei 1a5383b9bf open drm device 2019-06-10 16:11:18 +08:00
Vincent Wei 59e79143fb add DRM video driver 2019-06-10 16:10:59 +08:00
Vincent Wei 3601fa4868 use uintptr_t instead of UINT 2019-06-10 16:10:34 +08:00
Vincent Wei bad3722987 cleanup 2019-06-06 16:15:35 +08:00
Vincent Wei f3518b0254 ignore *.in~ 2019-06-06 12:39:43 +08:00
Vincent Wei 4fd4dfa561 empty implementation for drm video engine 2019-06-05 15:32:58 +08:00
Vincent Wei 924c1ecd79 sections for DRM video engine and EVDev input engine 2019-06-05 15:31:48 +08:00
Vincent Wei 43f9a1efbd options for DRM video engine and EVDev input engine 2019-06-05 15:31:27 +08:00
Vincent Wei fd7bb50756 add some notes for some keys 2019-06-04 10:50:57 +08:00
Vincent Wei 209a9cd69a remove checking of output rectangle for DrawTextEx2 2019-05-31 17:36:29 +08:00
Vincent Wei 855fdbad22 fixbug: convert Achar32 to Glyph32 for GetTabbedTextExtentPoint function 2019-05-30 16:34:22 +08:00
Vincent Wei ec330b1fea Try to load font from the relative path, if failed, try to load font from the system resource path. 2019-05-28 18:06:54 +08:00
Vincent Wei 09667150e8 Use _DBG_PRINTF for debug output instead of _WRN_PRINTF. 2019-05-28 18:06:19 +08:00
Vincent Wei 8ad28f6ae7 IsInvalidKey -> IsValidKey 2019-05-17 18:11:36 +08:00
Vincent Wei d3541df49e remove debug printf 2019-05-17 16:49:01 +08:00
Vincent Wei 617715e332 tune 2019-05-16 10:20:41 +08:00
Vincent Wei b9fd4b9178 New API: GetNextUChar 2019-05-15 11:58:48 +08:00
Vincent Wei e4499ee3ab cleanup 2019-04-22 16:24:31 +08:00
Vincent Wei dc31fc8e68 add link to CSS Writing Modes Level 3 2019-04-17 14:10:07 +08:00
Vincent Wei dff3093091 add link to GitHub wiki 2019-04-17 13:54:32 +08:00
Vincent Wei 05483a43bb fix typos 2019-04-16 18:08:25 +08:00
HOU Huihua 7ed7a27d62 tune code for SUBPIXEL rendering 2019-04-16 15:43:00 +08:00
Vincent Wei 4592dd3cd1 cleanup 2019-04-16 09:13:52 +08:00
Vincent Wei 8fe06d5a07 use const for pointer fields of INNER_RES 2019-04-15 16:44:37 +08:00
Vincent Wei fda8b7975d use inline functions for --disable-cursor instead of macros 2019-04-15 16:44:03 +08:00
Vincent Wei 9eb7bec6d3 update splash picture with new version (4.0) 2019-04-15 10:38:23 +08:00
Vincent Wei 5aee257855 Merge branch 'master' of github.com:VincentWei/minigui 2019-04-15 10:33:29 +08:00
Vincent Wei 9acc9e7b68 update to version 4.0 2019-04-15 10:33:04 +08:00
Vincent Wei 524fbd4833 cleanup 2019-04-15 10:13:23 +08:00
Vincent Wei 1eee78cfbc tune 2019-04-14 18:25:43 +08:00
Vincent Wei efc658016e HarzBuff -> HarfBuzz 2019-04-12 19:58:19 +08:00
Vincent Wei f8b834948f tune format 2019-04-12 19:42:59 +08:00
Vincent Wei ed4f2c1cfb tune format 2019-04-12 19:31:51 +08:00
WEI Yongming 8baaad037a tune release notes 2019-04-12 18:22:07 +08:00
WEI Yongming 2879190c44 Merge branch 'master' of github.com:VincentWei/minigui 2019-04-12 18:19:58 +08:00
WEI Yongming 49a9114155 support for LibPNG16 2019-04-12 18:19:35 +08:00
Vincent Wei 596c62b0c7 tune release notes 2019-04-12 15:50:47 +08:00
Vincent Wei 08f0d86c6e tune readme.md 2019-04-12 14:30:52 +08:00
Vincent Wei 7135b7ee5f tune release notes 2019-04-12 14:16:49 +08:00
Vincent Wei 9c1e9ad2ff GetGlyphValue -> GetGlyphValueAlt; Restore old GetGlyphValue 2019-04-12 14:05:22 +08:00
Vincent Wei 0c8a8acadd tune code for make docs 2019-04-12 11:39:53 +08:00
Vincent Wei 15fad87930 Restore GetGlyphBitmap 2019-04-12 11:39:06 +08:00
WEI Yongming 2caa09e185 tune 2019-04-12 09:23:51 +08:00
WEI Yongming 54577e9dd2 increase temp buffer size to avoid overflow; \t -> 4 spaces 2019-04-11 18:49:47 +08:00
WEI Yongming 2547782f77 tune code for gcc 4.8.5 2019-04-11 18:16:29 +08:00
Vincent Wei 9db7ec1abb use directly link for RELEASE-NOTES.md file 2019-04-11 12:53:13 +08:00
Vincent Wei d8264a91d5 Include README.md for Doxygen mainpage 2019-04-11 12:51:31 +08:00
Vincent Wei 852b7da5bc tune API description 2019-04-11 12:18:03 +08:00
Vincent Wei dd6248e90e cleanup for Doxygen 2019-04-11 10:54:17 +08:00
Vincent Wei 2581fa4d18 remove assert 2019-04-10 18:22:32 +08:00
Vincent Wei 7ab32056e1 tune glyph generating 2019-04-10 18:06:48 +08:00
Vincent Wei 3e6e0151af check ellipsized for next line 2019-04-10 16:31:02 +08:00
Vincent Wei 8f27fbb1a8 debug and tune 2019-04-10 16:20:37 +08:00
Vincent Wei 87d4fcf00b shape_fallback when the shaping engine failed 2019-04-10 14:38:29 +08:00
Vincent Wei 9ae76a1d91 cleanup 2019-04-10 10:13:51 +08:00
Vincent Wei 43ef338bd8 debug: use FS_SLANT_ROMAN as the default 2019-04-10 10:13:41 +08:00
Vincent Wei 3407d6f20c GRF_ALIGN_JUSTIFY for all lines 2019-04-10 09:39:28 +08:00
Vincent Wei 33bd6087b5 always use __mg_glyph_string_set_size 2019-04-10 09:16:41 +08:00
Vincent Wei a36b2fb3b3 debug 2019-04-09 18:46:53 +08:00
Vincent Wei 7811f86782 debug 2019-04-09 18:39:28 +08:00
Vincent Wei eb81fadbda debug: use bad ellipsis_ucs in shape_ellipsis 2019-04-09 16:04:24 +08:00
Vincent Wei 27139876a8 Use language code instead of script type for the first argument of UStrGetBreaks 2019-04-09 15:35:19 +08:00
Vincent Wei 14eca8703c debug 2019-04-09 15:26:07 +08:00
Vincent Wei 9e0c3a9c99 cleanup 2019-04-09 11:09:54 +08:00
Vincent Wei 7cc185f409 use 0xff for alpha of RGB2Pixel 2019-04-09 10:46:54 +08:00
Vincent Wei c827a8b6a9 debug: use static _funcs object to avoid memory leak 2019-04-09 10:17:52 +08:00
Vincent Wei 5abeee3b64 tune __mg_ft2_get_face return filename and face 2019-04-08 18:35:34 +08:00
Vincent Wei 5758700e70 cleanup 2019-04-08 18:12:07 +08:00
Vincent Wei 4586e25709 cleanup 2019-04-08 17:53:55 +08:00
Vincent Wei 7e776f6b78 optimize complex shaping engine 2019-04-08 17:52:46 +08:00
Vincent Wei 4ea2e11c5a debug 2019-04-08 16:13:03 +08:00
Vincent Wei 8e95f3bd93 debug 2019-04-08 15:34:51 +08:00
Vincent Wei 872ea630fd initial implementation of complex shaping engine 2019-04-08 15:17:05 +08:00
Vincent Wei 0b92cd51be check li.bpp with the requested bpp 2019-04-08 12:10:24 +08:00
Vincent Wei 724da1b1c0 tune links 2019-04-08 11:03:15 +08:00
Vincent Wei f78b9b750c link to RELEASENOTES.md 2019-04-08 10:59:13 +08:00
Vincent Wei c3683fb626 C++ -> Class 2019-04-08 10:57:42 +08:00
Vincent Wei 79b1dfefa2 more description 2019-04-08 10:54:29 +08:00
Vincent Wei eca76e6e89 fix typos 2019-04-07 18:17:46 +08:00
Vincent Wei 114426559f fix typos 2019-04-07 17:45:46 +08:00
Vincent Wei a0aaccdfd0 use standard pixel format for pdc->alpha_pixel_format 2019-04-07 17:19:12 +08:00
Vincent Wei 944d2ca8ae expose structures and definitions 2019-04-07 17:04:28 +08:00
Vincent Wei 321633c7bc Merge branch 'master' of github.com:VincentWei/minigui 2019-04-07 16:56:55 +08:00
Vincent Wei e5255d13e1 merge changes for exstubs.h from rel-3-2 manually 2019-04-07 16:56:43 +08:00
VincentWei e8bf19f212 fix typos 2019-04-06 23:13:43 +08:00
Vincent Wei a407f36975 introduction to MiniGUI 4.0.0 2019-04-06 15:51:02 +08:00
Vincent Wei c179737716 release notes for MiniGUI 4.0.0 2019-04-06 15:44:11 +08:00
Vincent Wei 4ef0079488 release notes for MiniGUI 4.0.0 2019-04-06 15:30:51 +08:00
Vincent Wei 36e3869385 handle SIGINT for ths and sa runmodes 2019-04-06 13:59:13 +08:00
Vincent Wei 32d800b1b9 always link to pthread 2019-04-06 13:45:59 +08:00
Vincent Wei dfd4a603f9 change version to 4.0.0 2019-04-06 13:34:20 +08:00
1025 changed files with 26419 additions and 5419 deletions
+1
View File
@@ -22,4 +22,5 @@ Makefile.in
/*.pc /*.pc
/*config.h /*config.h
/*config.h.in /*config.h.in
/*config.h.in~
+2 -2
View File
@@ -4984,11 +4984,11 @@ provide the function whether the file exist or not.(xwyan)
* src/server/request.c * src/server/request.c
10/24. MODIFICATION: Use 1980/01/01 00:00:00 to return the default local time 10/24. MODIFICATION: Use 1980/01/01 00:00:00 to return the default local time
for __mg_localtime. for __mg_os_localtime.
* src/misc/nposix.c * src/misc/nposix.c
10/24. MODIFICATION: Use HAVE_TIME, HAVE_MKTIME, and HAVE_LOCALTIME to define 10/24. MODIFICATION: Use HAVE_TIME, HAVE_MKTIME, and HAVE_LOCALTIME to define
__mg_time, __mg_mktime, and __mg_localtime functions. __mg_os_time, __mg_os_mktime, and __mg_os_localtime functions.
* configure.in * configure.in
* src/misc/nposix.c * src/misc/nposix.c
+9 -4
View File
@@ -38,7 +38,7 @@ PROJECT_NAME = "MiniGUI API Reference (MiniGUI-Processes)"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = v3.2.0 PROJECT_NUMBER = v4.0.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If # entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used. # left blank the current directory will be used.
OUTPUT_DIRECTORY = doc OUTPUT_DIRECTORY = doc-api-ref-minigui-procs-4.0.1
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and # directories (in 2 levels) under the output directory of each output format and
@@ -782,6 +782,7 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = ./include INPUT = ./include
INPUT += README.md
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -939,7 +940,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub # (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output. # and want to reuse the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE = USE_MDFILE_AS_MAINPAGE = README.md
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to source browsing # Configuration options related to source browsing
@@ -2073,6 +2074,7 @@ PREDEFINED = _MGRM_PROCESSES \
_MGMISC_SAVEBITMAP \ _MGMISC_SAVEBITMAP \
_MGHAVE_CURSOR \ _MGHAVE_CURSOR \
_MGCHARSET_UNICODE \ _MGCHARSET_UNICODE \
_MGCOMPLEX_SCRIPTS \
_MGCTRL_STATIC \ _MGCTRL_STATIC \
_MGCTRL_SLEDIT \ _MGCTRL_SLEDIT \
_MGCTRL_BIDISLEDIT \ _MGCTRL_BIDISLEDIT \
@@ -2099,7 +2101,10 @@ PREDEFINED = _MGRM_PROCESSES \
_MGCTRL_ANIMATION \ _MGCTRL_ANIMATION \
_MGFONT_FT2 \ _MGFONT_FT2 \
_MGFONT_UPF \ _MGFONT_UPF \
_MGFONT_BMPF _MGFONT_BMPF \
_MGGAL_DRI \
_MGGAL_COMMLCD \
_MGIAL_COMM
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The # tag can be used to specify a list of macro names that should be expanded. The
+9 -4
View File
@@ -38,7 +38,7 @@ PROJECT_NAME = "MiniGUI API Reference (MiniGUI-Standalone)"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = v3.4.0 PROJECT_NUMBER = v4.0.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If # entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used. # left blank the current directory will be used.
OUTPUT_DIRECTORY = doc OUTPUT_DIRECTORY = doc-api-ref-minigui-sa-4.0.1
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and # directories (in 2 levels) under the output directory of each output format and
@@ -782,6 +782,7 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = ./include INPUT = ./include
INPUT += README.md
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -939,7 +940,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub # (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output. # and want to reuse the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE = USE_MDFILE_AS_MAINPAGE = README.md
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to source browsing # Configuration options related to source browsing
@@ -2073,6 +2074,7 @@ PREDEFINED = _MGRM_STANDALONE \
_MGMISC_SAVEBITMAP \ _MGMISC_SAVEBITMAP \
_MGHAVE_CURSOR \ _MGHAVE_CURSOR \
_MGCHARSET_UNICODE \ _MGCHARSET_UNICODE \
_MGCOMPLEX_SCRIPTS \
_MGCTRL_STATIC \ _MGCTRL_STATIC \
_MGCTRL_SLEDIT \ _MGCTRL_SLEDIT \
_MGCTRL_BIDISLEDIT \ _MGCTRL_BIDISLEDIT \
@@ -2099,7 +2101,10 @@ PREDEFINED = _MGRM_STANDALONE \
_MGCTRL_ANIMATION \ _MGCTRL_ANIMATION \
_MGFONT_FT2 \ _MGFONT_FT2 \
_MGFONT_UPF \ _MGFONT_UPF \
_MGFONT_BMPF _MGFONT_BMPF \
_MGGAL_DRI \
_MGGAL_COMMLCD \
_MGIAL_COMM
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The # tag can be used to specify a list of macro names that should be expanded. The
+9 -4
View File
@@ -38,7 +38,7 @@ PROJECT_NAME = "MiniGUI API Reference (MiniGUI-Threads)"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = v3.2.0 PROJECT_NUMBER = v4.0.1
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If # entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used. # left blank the current directory will be used.
OUTPUT_DIRECTORY = doc OUTPUT_DIRECTORY = doc-api-ref-minigui-ths-4.0.1
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and # directories (in 2 levels) under the output directory of each output format and
@@ -782,6 +782,7 @@ WARN_LOGFILE =
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = ./include INPUT = ./include
INPUT += README.md
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -939,7 +940,7 @@ FILTER_SOURCE_PATTERNS =
# (index.html). This can be useful if you have a project on for instance GitHub # (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output. # and want to reuse the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE = USE_MDFILE_AS_MAINPAGE = README.md
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to source browsing # Configuration options related to source browsing
@@ -2073,6 +2074,7 @@ PREDEFINED = _MGRM_THREADS \
_MGMISC_SAVEBITMAP \ _MGMISC_SAVEBITMAP \
_MGHAVE_CURSOR \ _MGHAVE_CURSOR \
_MGCHARSET_UNICODE \ _MGCHARSET_UNICODE \
_MGCOMPLEX_SCRIPTS \
_MGCTRL_STATIC \ _MGCTRL_STATIC \
_MGCTRL_SLEDIT \ _MGCTRL_SLEDIT \
_MGCTRL_BIDISLEDIT \ _MGCTRL_BIDISLEDIT \
@@ -2099,7 +2101,10 @@ PREDEFINED = _MGRM_THREADS \
_MGCTRL_ANIMATION \ _MGCTRL_ANIMATION \
_MGFONT_FT2 \ _MGFONT_FT2 \
_MGFONT_UPF \ _MGFONT_UPF \
_MGFONT_BMPF _MGFONT_BMPF \
_MGGAL_DRI \
_MGGAL_COMMLCD \
_MGIAL_COMM
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The # tag can be used to specify a list of macro names that should be expanded. The
+12 -11
View File
@@ -1,7 +1,6 @@
SUBDIRS = src 3rd-party include rtos etc m4 cmake build SUBDIRS = src 3rd-party include rtos etc m4 cmake build
EXTRA_DIST = \ EXTRA_DIST = minigui.pc.in \
minigui.pc.in \
GNUmakefile makefile.ng makefile.msvc rules.make \ GNUmakefile makefile.ng makefile.msvc rules.make \
Version INSTALL LICENSE \ Version INSTALL LICENSE \
README.md RELEASE-NOTES.md \ README.md RELEASE-NOTES.md \
@@ -13,15 +12,17 @@ libminiguiincludedir = $(includedir)/minigui
# Which header files to install # Which header files to install
libminiguiinclude_HEADERS = mgconfig.h libminiguiinclude_HEADERS = mgconfig.h
docs:
doxygen Doxyfile.procs Doxyfile.ths Doxyfile.sa
dist-nolicense: dist
./clean_license.sh $(DIST_ARCHIVES)
dist:
distcheck-nolicense:dist-nolicense distcheck
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = minigui.pc pkgconfig_DATA = minigui.pc
docs:
doxygen Doxyfile.procs
doxygen Doxyfile.ths
doxygen Doxyfile.sal
#dist-nolicense: dist
# ./clean_license.sh $(DIST_ARCHIVES)
#
#dist:
#distcheck-nolicense:dist-nolicense distcheck
+201 -156
View File
@@ -5,25 +5,27 @@ A mature and proven cross-platform GUI system for embedded and smart IoT devices
## TABLE OF CONTENTS ## TABLE OF CONTENTS
1. Introduction - [INTRODUCTION](#introduction)
1. A brief building instruction - [A BRIEF BUILDING INSTRUCTION](#a-brief-building-instruction)
1. New features in version 3.4.x * [Prerequisites](#prerequisites)
1. New features in version 3.2.x * [Building MiniGUI Core](#building-minigui-core)
1. The runtime modes of MiniGUI * [Building the Comprehensive Demo](#building-the-comprehensive-demo)
1. History * [Unit Tests](#unit-tests)
1. About the authors - [NEW FEATURES IN VERSION 4.0.x](#new-features-in-version-40x)
1. If you have a problem - [NEW FEATURES IN VERSION 3.2.x](#new-features-in-version-32x)
1. A little FAQ - [THE RUNTIME MODES OF MINIGUI](#the-runtime-modes-of-minigui)
1. Not free for commercial use - [HISTORY](#history)
1. Copying - [AUTHORS AND COPYING](#authors-and-copying)
* [Not Free for Commercial Use](#not-free-for-commercial-use)
* [Special Statement](#special-statement)
- [A LITTLE FAQ](#a-little-faq)
## INTRODUCTION ## INTRODUCTION
MiniGUI is a mature cross-platform windowing system and a GUI (Graphics MiniGUI is a mature cross-platform windowing system and a GUI (Graphics
User Interface) support system for embedded systems and smart IoT devices. User Interface) support system for embedded systems and smart IoT devices.
This is the version 3.2.x of MiniGUI maintained by WEI Yongming This is the version 4.0.x of MiniGUI maintained by WEI Yongming.
(Vincent Wei, https://github.com/VincentWei).
MiniGUI is released under GPLv3 and the dual-licensing applies to commercial MiniGUI is released under GPLv3 and the dual-licensing applies to commercial
use. use.
@@ -31,42 +33,34 @@ use.
MiniGUI aims to provide a fast, stable, full-featured, and cross-platform MiniGUI aims to provide a fast, stable, full-featured, and cross-platform
windowing and GUI support system, which is especially fit for windowing and GUI support system, which is especially fit for
embedded systems or smart IoT devices based-on Linux/uClinux, eCos, and other embedded systems or smart IoT devices based-on Linux/uClinux, eCos, and other
traditional RTOSes, such as VxWorks, ThreadX, Nucleus, pSOS, uC/OS-II, traditional RTOSes, such as RT-Thread, FreeRTOS, RTEMS, VxWorks, ThreadX,
and OSE. Nucleus, pSOS, uC/OS-II, and OSE.
This is the MiniGUI core source tree, which provides windowing This is the MiniGUI core source tree, which provides windowing
and graphics interfaces as well as a lot of standard controls (tookit). and graphics interfaces as well as a lot of standard controls (toolkit).
Besides MiniGUI core, FMSoft also provides some components Besides MiniGUI core, FMSoft also provides some components
for the developers to develop app much easier: for the developers to develop app much easier:
* mGUtils: A MiniGUI component which contains miscellaneous utilities * mGUtils: A MiniGUI component which contains miscellaneous utilities
like ColorSelectionDialogBox, FileOpenDialogBox, and so on. like `ColorSelectionDialogBox`, `FileOpenDialogBox`, and so on.
* mGPlus: A MiniGUI component which provides support for advanced graphics * mGPlus: A MiniGUI component which provides support for advanced graphics
functions like path, gradient, anti-aliase stretch, and color combination. functions like path, gradient, anti-aliased stretch, and color combination.
* mGEff: mGEff provides an animation framework for MiniGUI app. * mGEff: mGEff provides an animation framework for MiniGUI app.
It also provides some popular UI/UE special effects. It also provides some popular UI/UE special effects.
* mGNCS: This component provides a new control set for MiniGUI app. * mGNCS: This component provides a new control set for MiniGUI app.
By using mGNCS, you can use miniStudio to develop MiniGUI app in
WYSIWYG way.
* mGNCS4Touch: This component provides some new controls, which are * mGNCS4Touch: This component provides some new controls, which are
compliant to the new control API spec of mGNCS, for devices with compliant to the new control API spec of mGNCS, for devices with
a touch screen. touch screens.
There are also some legacy MiniGUI components. We will not maintain these There are also some legacy MiniGUI components. But we will not maintain these
components for MiniGUI core v3.2: components since MiniGUI v3.2.0:
* mGi: An input method component for MiniGUI. This component provides * mGi: An input method component for MiniGUI. This component provides
some typical input methods (such as softkey, hand-writing, and predict some typical input methods (such as soft keyboard, hand-writing, and predict
text input for mobile phone) for MiniGUI apps. text input for mobile phone) for MiniGUI apps.
* mGp: A printing component for MiniGUI. By using mGp, you can print * mGp: A printing component for MiniGUI. By using mGp, you can print
out the graphics created by MiniGUI app to general-purpose printers. out the graphics created by MiniGUI app to general-purpose printers.
* mG3d: A simple three-dimension component for MiniGUI. This component * mG3d: A simple three-dimension component for MiniGUI. This component
provides a simple 3D API for app. You can use mG3d to create simple provides a simple 3D API for app. You can use mG3d to create simple
3D UI. 3D UI.
@@ -81,7 +75,7 @@ as a free software project.
You can download the source code tarball of MiniGUI and the dependent libraries You can download the source code tarball of MiniGUI and the dependent libraries
from the download zone of the site: from the download zone of the site:
http://www.minigui.com <http://www.minigui.com>
FMSoft also releases some open source apps for MiniGUI on the site above, FMSoft also releases some open source apps for MiniGUI on the site above,
for examples: for examples:
@@ -89,27 +83,26 @@ for examples:
* mDolphin, licensed under Apache 2.0, is a full-featured * mDolphin, licensed under Apache 2.0, is a full-featured
WEB/WAP browser, which is developed based on the open source browser WEB/WAP browser, which is developed based on the open source browser
core WebKit and uses MiniGUI as its underlying graphics support system. core WebKit and uses MiniGUI as its underlying graphics support system.
* mGallery, licensed under Apache 2.0, intends to * mGallery, licensed under Apache 2.0, intends to
provide a total solution for PMP (Portable Multimedia Player), provide a total solution for PMP (Portable Multimedia Player),
which uses MiniGUI as the graphics platform. which uses MiniGUI as the graphics platform.
* mSpider, licensed under GPL 3.0, intends to provide a * mSpider, licensed under GPL 3.0, intends to provide a
light-weight MiniGUI-based web browser (HTML 3.2 and part JavaScript) light-weight MiniGUI-based web browser (HTML 3.2 and part JavaScript)
* mEagle, licensed under GPL 3.0, is an embedded GIS development platform * mEagle, licensed under GPL 3.0, is an embedded GIS development platform
which addresses the needs of map browse, query, analysis, etc which addresses the needs of map browse, query, analysis, etc
FMSoft had created the public repositories for MiniGUI core, MiniGUI FMSoft had created the public repositories for MiniGUI core, MiniGUI
components, and other open source apps on GitHub. You can visit them on: components, and other open source apps on GitHub. You can visit them on:
https://github.com/VincentWei <https://github.com/VincentWei>
FMSoft also releases miniStudio, which is a WYSIWYG IDE for MiniGUI, as a shareware. and
You can also download it from the official site of MiniGUI.
http://www.minigui.com/en/download <https://github.com/FMSoftCN>
We now maintain all documents about MiniGUI on the following public repo:
<https://github.com/VincentWei/minigui-docs>
## A BRIEF BUILDING INSTRUCTION ## A BRIEF BUILDING INSTRUCTION
@@ -117,16 +110,17 @@ This instruction assumes that you are using Ubuntu Linux.
### Prerequisites ### Prerequisites
You can run `apt install <package_name>` to install the software on Ubuntu Linux. You should run `apt install <package_name>` to install the following packages
on your Ubuntu Linux.
* Building tools: * Building tools:
* autoconf * autoconf
* Dependent libraries (all are optional): * Dependent libraries (all are optional):
* libjpeg64-dev * libjpeg64-dev
* libpng12-dev * libpng12-dev (use libpng-dev on Ubuntu Linux 18.04 LTS)
* libfreetype6-dev * libfreetype6-dev
### Building ### Building MiniGUI Core
MiniGUI core uses GNU autoconf/automake scripts to configure and build the project. MiniGUI core uses GNU autoconf/automake scripts to configure and build the project.
@@ -146,44 +140,93 @@ For more information, please run
$ ./configure --help $ ./configure --help
### Building the Comprehensive Demo
## NEW FEATURES IN VERSION 3.4.x If you are anxious to see the comprehensive demo of MiniGUI core
and MiniGUI components, please fetch one of the following repositories
from GitHub and follow the instructions to build the samples and
the demonstration programs:
We introduce some new features in MiniGUI Version 3.4.x: https://github.com/VincentWei/build-minigui-4.0
* The font and UNICODE related APIs are tuned or enhanced, or
in order to support HybridOS Foundation C++ Library.
For more information, please refer to RELEASENOTES.md file. https://github.com/VincentWei/build-minigui-3.2
### Unit Tests
Since MiniGUI 4.0.0, we organize the unit test code of MiniGUI APIs in the
following repository:
https://github.com/VincentWei/mg-tests
If you are interested in hacking the MiniGUI code, please visit this repository.
## NEW FEATURES IN VERSION 4.0.x
In this version, we enhanced and tuned the APIs related to text rendering,
in order to support [HybridOS Foundation Class Library].
* Since 4.0.2, MiniGUI provides support for RTEMS, RT-Thread, and FreeRTOS.
* MiniGUI now provides complete APIs for Unicode characters processing.
These APIs conform to Unicode 12.0.
* MiniGUI also provides new APIs to lay out, shape, and render glyphs
from complex and mixed scripts, such as Arabic, Thai, and Indic.
* We tuned and optimized MiniGUI's logical and device font interfaces to
support the new features above.
* MiniGUI now is enhanced to support input events which may be generated
by input devices other than standard mouse (or single-touch panel) and
keyboard, such as multi-touch panel (gesture), joystick, tablet tool,
table pad, and switch. In MiniGUI 4.0, we introduce `MSG_EXIN_XXX` messages
to support the input events from devices other than standard mouse
and keyboard. We call these messages as 'extra input messages'.
* The NEWGAL engine of `dri` to support modern DRI/DRM-driven graphics cards
or GPUs on Linux.
* The IAL engine of `libinput` to support all modern input devices including
mouse, keyboard, joystick, switch, multiple touch panel, gesture, tablet tool,
and table pad on Linux.
* We introduced a Slice Memory Allocator for fast concurrent memory chunk
allocation.
* Cleanup and tune code for GCC 7.3.
For more information, please refer to `RELEASE-NOTES.md` file:
<https://github.com/VincentWei/minigui/blob/master/RELEASE-NOTES.md>
Because of the changes of some APIs, we recommended strongly that you
use this version for new projects.
## NEW FEATURES IN VERSION 3.2.x ## NEW FEATURES IN VERSION 3.2.x
We introduce some new features in MiniGUI Version 3.2.x: We introduce some new features in MiniGUI Version 3.2.x:
* The support for 64-bit platform. Note that some APIs have changed * The support for 64-bit platform. Note that some APIs have changed
to support 64-bit platform. For more information, please refer to to support 64-bit platform.
RELEASE-NOTES.md file. * Some enhancements and optimizations.
Because of the changes of some APIs, we recommended strongly that you For more information, please refer to `RELEASE-NOTES.md` file:
use this version for new projects.
<https://github.com/VincentWei/minigui/blob/rel-3-2/RELEASE-NOTES.md>
## THE RUNTIME MODES OF MINIGUI ## THE RUNTIME MODES OF MINIGUI
You can configure and compile MiniGUI as one of three runtime modes: You can configure and compile MiniGUI as one of three runtime modes:
* 'MiniGUI-Threads': A program running on MiniGUI-Threads can create * `MiniGUI-Threads`: A program running on MiniGUI-Threads can create
multiple cascaded windows in different threads, and all the windows multiple cascaded windows in different threads, and all the windows
belong to a single process. MiniGUI-Threads is fit for some real-time belong to a single process. MiniGUI-Threads is fit for some real-time
systems on Linux/uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX, systems on Linux/uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX,
and OSE. and OSE.
* 'MiniGUI-Processes': A program running on MiniGUI-Processes is * `MiniGUI-Processes`: A program running on MiniGUI-Processes is
an independent process, which can also create multiple windows. an independent process, which can also create multiple windows.
MiniGUI-Processes is fit for some complex embedded systems, such as MiniGUI-Processes is fit for some complex embedded systems, such as
PDAs, Thin-Clients or STBs. This mode is only useful for full-featured PDAs, Thin-Clients or STBs. This mode is only useful for full-featured
UNIX-like operating systems, like Linux. UNIX-like operating systems, like Linux.
* 'MiniGUI-Standalone': A single process version of MiniGUI. This mode * `MiniGUI-Standalone`: A single process version of MiniGUI. This mode
is useful for some small systems, like uClinux or RTOSes. is useful for some small systems, like uClinux or RTOSes.
The original MiniGUI (version 1.0) run in MiniGUI-Threads mode. The original MiniGUI (version 1.0) run in MiniGUI-Threads mode.
@@ -199,7 +242,7 @@ You can use MiniGUI-Processes to run more than one MiniGUI-based
program in the form of UNIX process at the same time. MiniGUI-Processes program in the form of UNIX process at the same time. MiniGUI-Processes
is a full-featured multi-process version of original MiniGUI -- You is a full-featured multi-process version of original MiniGUI -- You
can run a program based on MiniGUI-Processes from a program called can run a program based on MiniGUI-Processes from a program called
'mginit'. Just like X Window, the former process is called a client, `mginit`. Just like X Window, the former process is called a client,
and the latter the server. and the latter the server.
Clients connect to the server via UNIX domain socket, and the server Clients connect to the server via UNIX domain socket, and the server
@@ -244,123 +287,80 @@ In the development of version 3.0.x, we introduced Look & Feel Renderer,
BIDI text support, Non-rectangular window, double-buffer window, and BIDI text support, Non-rectangular window, double-buffer window, and
other main features. other main features.
In the development of version 4.0.x, we introduced the support for
complex writing systems (scripts), such as Arabic, Thai, and Indic.
A brief history description of the development progress lay below: A brief history description of the development progress lay below:
0) 1994 ~ 1996: MiniGUI DOS version. 1. 1994 ~ 1996: MiniGUI DOS version.
1) Dec, 1998: Began to write. 1. Dec, 1998: Began to write.
2) Apr, 1999: The skeleton of MiniGUI, windowing sub-system 1. Apr, 1999: The skeleton of MiniGUI, windowing sub-system
and basic graphics device interfaces. and basic graphics device interfaces.
3) May, 1999: Timer, menu, and the skeleton of control sub-system. 1. May, 1999: Timer, menu, and the skeleton of control sub-system.
4) Jun, 1999: Chinese input method (by Kang Xiaoning). 1. Jun, 1999: Chinese input method (by Kang Xiaoning).
5) July, 1999: GIF and JPG loading support (by LI Zhuo). 1. July, 1999: GIF and JPG loading support (by LI Zhuo).
6) Aug, 1999: Some standard controls (Portion by Zhao Jianghua). 1. Aug, 1999: Some standard controls (Portion by Zhao Jianghua).
7) Sep, 1999: Dialog boxes and message boxes. 1. Sep, 1999: Dialog boxes and message boxes.
8) Sep, 1999: Snapshot of screen or window. 1. Sep, 1999: Snapshot of screen or window.
9) Jan., 2000: VCOnGUI (Virtual Console on MiniGUI) version 0.2.02. 1. Jan., 2000: VCOnGUI (Virtual Console on MiniGUI) version 0.2.02.
10) Mar., 2000: Linux distribution installer based-on MiniGUI for 1. Mar., 2000: Linux distribution installer based-on MiniGUI for
HappyLinux 1.0. HappyLinux 1.0.
11) Jun., 2000: Began to develop version 1.0.xx. 1. Jun., 2000: Began to develop version 1.0.xx.
12) Sep., 2000: MiniGUI version 0.3.06 released. 1. Sep., 2000: MiniGUI version 0.3.06 released.
13) Oct., 2000: MiniGUI version 0.9.00 released. 1. Oct., 2000: MiniGUI version 0.9.00 released.
14) Nov., 2000: MiniGUI version 0.9.96 released. 1. Nov., 2000: MiniGUI version 0.9.96 released.
15) Jan., 2001: MiniGUI version 0.9.98 released. You can build 1. Jan., 2001: MiniGUI version 0.9.98 released. You can build
MiniGUI-Lite from this version. MiniGUI-Lite from this version.
16) Jan., 2001: MiniGUI version 1.0.00Beta1 released. 1. Jan., 2001: MiniGUI version 1.0.00Beta1 released.
17) Feb., 2001: MiniGUI version 1.0.00Pre1 released. 1. Feb., 2001: MiniGUI version 1.0.00Pre1 released.
18) Apr., 2001: MiniGUI version 1.0.00 released (2001/04/16). 1. Apr., 2001: MiniGUI version 1.0.00 released (2001/04/16).
18) Sep., 2001: MiniGUI version 1.1.0Pre1 released (2001/09/12). 1. Sep., 2001: MiniGUI version 1.1.0Pre1 released (2001/09/12).
19) Sep., 2001: MiniGUI version 1.0.9 released (2001/09/17), 1. Sep., 2001: MiniGUI version 1.0.9 released (2001/09/17),
this will be the last version of source branch 1.0.x. this will be the last version of source branch 1.0.x.
20) Oct., 2001: MiniGUI version 1.1.0Pre4 released (2001/10/22). 1. Oct., 2001: MiniGUI version 1.1.0Pre4 released (2001/10/22).
This version have new GAL and GDI interfaces. This version have new GAL and GDI interfaces.
21) Mar., 2002: MiniGUI official version 1.1.0 released (2002/03/08). 1. Mar., 2002: MiniGUI official version 1.1.0 released (2002/03/08).
MiniGUI API Reference documentation version 0.9 released. MiniGUI API Reference documentation version 0.9 released.
22) Mar., 2002: MiniGUI API Reference documentation version 1.0 released. 1. Mar., 2002: MiniGUI API Reference documentation version 1.0 released.
23) Apr., 2002: MiniGUI the new stable version 1.2.0 released (2002/04/11). 1. Apr., 2002: MiniGUI the new stable version 1.2.0 released (2002/04/11).
24) Sep., 2002: The main developers of MiniGUI founded a 1. Sep., 2002: The main developers of MiniGUI founded a
new software corporation: Beijing FMSoft Technology Co., Ltd.. new software corporation: Beijing FMSoft Technology Co., Ltd..
And the development and maintenance of MiniGUI changes from And the development and maintenance of MiniGUI changes from
loosely-knit team to business organization. loosely-knit team to business organization.
25) Mar., 2003: MiniGUI official version 1.2.5 released (2003/03/23). 1. Mar., 2003: MiniGUI official version 1.2.5 released (2003/03/23).
25) May., 2003: MiniGUI official version 1.2.6 released (2003/05/18). 1. May., 2003: MiniGUI official version 1.2.6 released (2003/05/18).
26) Sep., 2003: MiniGUI official version 1.3.1 released (2003/09/11). 1. Sep., 2003: MiniGUI official version 1.3.1 released (2003/09/11).
27) Jan., 2004: MiniGUI official version 1.5.1 released (2004/01/18). 1. Jan., 2004: MiniGUI official version 1.5.1 released (2004/01/18).
28) Feb., 2004: MiniGUI tested on eCos and uC/OS-II. 1. Feb., 2004: MiniGUI tested on eCos and uC/OS-II.
29) Jun., 2004: MiniGUI tested on VxWorks. 1. Jun., 2004: MiniGUI tested on VxWorks.
30) Jan., 2005: MiniGUI tested on ThreadX and pSOS. 1. Jan., 2005: MiniGUI tested on ThreadX and pSOS.
31) Feb., 2005: MiniGUI official version 1.6.1 released. 1. Feb., 2005: MiniGUI official version 1.6.1 released.
32) Aug., 2005: MiniGUI beta version 2.0.0 released. 1. Aug., 2005: MiniGUI beta version 2.0.0 released.
33) Sep., 2005: MiniGUI official version 1.6.8 released. 1. Sep., 2005: MiniGUI official version 1.6.8 released.
34) Oct., 2005: MiniGUI official version 2.0.2 released. 1. Oct., 2005: MiniGUI official version 2.0.2 released.
35) Jun., 2006: MiniGUI provides support for OSE. 1. Jun., 2006: MiniGUI provides support for OSE.
36) Jul., 2006: MiniGUI official version 2.0.3/1.6.9 released. 1. Jul., 2006: MiniGUI official version 2.0.3/1.6.9 released.
37) Nov., 2007: MiniGUI official version 2.0.4/1.6.10 released. 1. Nov., 2007: MiniGUI official version 2.0.4/1.6.10 released.
38) Apr., 2009: MiniGUI official version 3.0.2 released. 1. Apr., 2009: MiniGUI official version 3.0.2 released.
39) Oct., 2009: MiniGUI official version 3.0.4 released. 1. Oct., 2009: MiniGUI official version 3.0.4 released.
40) Jan., 2010: MiniGUI official version 3.0.6 released. 1. Jan., 2010: MiniGUI official version 3.0.6 released.
41) May., 2010: MiniGUI official version 3.0.8 released. 1. May., 2010: MiniGUI official version 3.0.8 released.
42) Aug., 2010: MiniGUI official version 3.0.10 released. 1. Aug., 2010: MiniGUI official version 3.0.10 released.
43) Oct., 2010: MiniGUI official version 3.0.12 released. 1. Oct., 2010: MiniGUI official version 3.0.12 released.
44) Aug., 2017: FMSoft released the latest source code of MiniGUI under GPL 3.0. 1. Aug., 2017: FMSoft released the latest source code of MiniGUI under GPL 3.0.
45) Aug., 2017: FMSoft released the latest source code of mDolphin under Apache 2.0. 1. Aug., 2017: FMSoft released the latest source code of mDolphin under Apache 2.0.
46) Dec., 2017: FMSoft updated MiniGUI and miniStudio for latest Linux distributions. 1. Dec., 2017: FMSoft updated MiniGUI and miniStudio for latest Linux distributions.
47) Feb., 2018: FMSoft released MiniGUI version 3.2. 1. Feb., 2018: FMSoft released MiniGUI version 3.2.0.
47) Jun., 2019: FMSoft released MiniGUI version 3.4. 1. Apr., 2019: FMSoft released MiniGUI version 3.2.2.
1. Jul., 2019: FMSoft released MiniGUI version 4.0.0.
## AUTHORS AND COPYING
## ABOUT THE AUTHORS
The original author of MiniGUI is WEI Yongming, and now MiniGUI is The original author of MiniGUI is WEI Yongming, and now MiniGUI is
maintained by FMSoft. For more information, please browse maintained by FMSoft. For more information, please refer to
our home page: http://www.fmsoft.cn. <http://www.fmsoft.cn>.
Copyright (C) 2002 ~ 2019, Beijing FMSoft Technologies Co., Ltd.
## IF YOU HAVE A PROBLEM
If you have any technical problem, advice or comment, please send
messages to consult@minigui.com.
## A LITTLE FAQ
Q: Is GPL'd MiniGUI free for commercial use?
A: Simply no. FMSoft releases MiniGUI under GPLv3 license.
It is free for those who are 100% GPL and those who never copy, modify
and distribute MiniGUI. But if you want to use these GPL'd versions
for commerce, you should get the commercial license from FMSoft first.
Q: Which operating system does MiniGUI support?
A: MiniGUI can run on Linux/uClinux, uC/OS-II, eCos, ThreadX, pSOS,
VxWorks, ThreadX, OSE, and even Win32. Any other real-time OSes can
be supported theoretically.
Q: Which architecture does MiniGUI support?
A: x86 32/64-bit, ARM 32/64-bit (e.g., ARMv7 and ARM Cortex-A7),
PowerPC, MIPS, DragonBall, ColdFire, Blackfin, and so on.
Q: Does MiniGUI offer the support for grey LCD with 4bpp (bits per pixel)?
A: Yes, it offers. It even offers the support for 1bpp and 2bpp LCD.
## NOT FREE FOR COMMERCIAL USE
MiniGUI and its components are licensed under the GPL license.
So any links about MiniGUI must follow GPL. If you cannot accept GPL,
you need to be licensed from FMSoft. If you wonder that if you need
the commercial license of MiniGUI, please refer to the LICENSE-POLICY file.
We provide you the commercial license of MiniGUI according to the number
of the run-time binary copies of MiniGUI. If you are interested in
the commercial license of MiniGUI, please write to sales@minigui.com.
## COPYING
Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
Copyright (C) 1998 ~ 2002, WEI Yongming Copyright (C) 1998 ~ 2002, WEI Yongming
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@@ -388,3 +388,48 @@ the commercial license of MiniGUI, please write to sales@minigui.com.
For more information about the commercial license, please refer to For more information about the commercial license, please refer to
<http://www.minigui.com/en/about/licensing-policy/>. <http://www.minigui.com/en/about/licensing-policy/>.
### Special Statement
The above open source or free software license does
not apply to any entity in the Exception List published by
Beijing FMSoft Technologies Co., Ltd.
If you are or the entity you represent is listed in the Exception List,
the above open source or free software license does not apply to you
or the entity you represent. Regardless of the purpose, you should not
use the software in any way whatsoever, including but not limited to
downloading, viewing, copying, distributing, compiling, and running.
If you have already downloaded it, you MUST destroy all of its copies.
The Exception List is published by FMSoft and may be updated
from time to time. For more information, please see
<https://www.fmsoft.cn/exception-list>.
### Not Free for Commercial Use
As stated above, MiniGUI and its components are licensed under GPL.
So any links about MiniGUI must follow GPL. If you cannot accept GPL,
you need to be licensed from FMSoft.
We provide you the commercial license of MiniGUI according to the number
of the run-time binary copies of MiniGUI. If you are interested in
the commercial license of MiniGUI, please write to <sales@minigui.com>.
## A LITTLE FAQ
Q: Which operating systems does MiniGUI support?
A: MiniGUI can run on Linux/uClinux, uC/OS-II, eCos, ThreadX, pSOS,
VxWorks, ThreadX, OSE, and even Win32. Any other real-time OSes can
be supported theoretically.
Q: Which architecture does MiniGUI support?
A: x86 32/64-bit, ARM 32/64-bit (e.g., ARMv7 and ARM Cortex-A7),
PowerPC, MIPS, DragonBall, ColdFire, Blackfin, and so on.
Q: Does MiniGUI offer the support for grey LCD with 4bpp (bits per pixel)?
A: Yes, it offers. It even offers the support for 1bpp and 2bpp LCD.
Q: Can I get the tech support from MiniGUI team?
A: Yes, FMSoft can provide you with guaranteed commercial technical
support services. Please send messages to <sales@minigui.com>.
+505 -56
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -1,9 +1,9 @@
Version 3.4.0 (2019/06/30) Version 4.0.2 (2019/10/31)
This release needs the following resource packages: This release needs the following resource packages:
* minigui-res-3.4.0.tar.gz * minigui-res-4.0.0.tar.gz
The latest samples package is: The latest samples package is:
* mg-samples-3.4.0.tar.gz * mg-samples-4.0.1.tar.gz
+36
View File
@@ -0,0 +1,36 @@
# rules for pc-linux
# set your own targaet_os
TARGET_OS=linux
##################################################
# set your compile tool #
CC=gcc
CXX=g++
CPP=g++
AR=ar
AS=as
RANLIB=ranlib
MAKE=/usr/bin/make
##################################################
ARFLAGS=-rc
COFLAG=-c
OBJ=o
LIBA=a
##################################################
# if you don't want to create dynamic, delete it #
LIBSO=so
SOFLAGS=-fPIC -shared -o
##################################################
##################################################
# set your compile flags and install prefix path #
PREFIX=/usr/local
CFLAGS+=-g -Wall -fPIC `pkg-config --cflags freetype2` -I/usr/local/include/harfbuzz
LDFLAGS+=
##################################################
+249 -97
View File
File diff suppressed because it is too large Load Diff
+52 -8
View File
@@ -1,16 +1,20 @@
# This configuration file is for MiniGUI V3.x.x # This configuration file is for MiniGUI V4.0.x or later
# #
# Copyright (C) 2002~2018 FMSoft # Copyright (C) 2002~2019 FMSoft
# Copyright (C) 1998~2002 Wei Yongming. # Copyright (C) 1998~2002 Wei Yongming.
# #
# Web: http://www.minigui.com # Web: http://www.minigui.com
# #
# This configuration file must be installed in /etc, # This configuration file must be installed in /etc,
# /usr/local/etc or your home directory. When you install it in your # /usr/local/etc, your home directory, or the current working direcotry.
# home directory, it should be named ".MiniGUI.cfg". # When you install it in your home directory, it should be named
# ".MiniGUI.cfg".
# #
# The priority of above configruation files is ~/.MiniGUI.cfg, # The priority of above configruation files is ./MiniGUI.cfg,
# /usr/local/etc/MiniGUI.cfg, and then /etc/MiniGUI.cfg. # ~/.MiniGUI.cfg, /usr/local/etc/MiniGUI.cfg, and then /etc/MiniGUI.cfg.
#
# NOTE that the one in the current working directory will have
# always have the highest priority.
# #
# If you change the install path of MiniGUI resource, you should # If you change the install path of MiniGUI resource, you should
# modify this file to meet your configuration. # modify this file to meet your configuration.
@@ -26,12 +30,36 @@ ial_engine=pc_xvfb
mdev=/dev/input/mice mdev=/dev/input/mice
mtype=IMPS2 mtype=IMPS2
[fbcon] # Linux IAL engine based on libinput
defaultmode=1024x768-16bpp # ial_engine=libinut
#{{ifdef _MGGAL_DRI
[dri]
defaultmode=1024x768-32bpp
# We use DRM fourcc code to defined the pixel format of the video surface.
# For more information, please see <drm/drm_fourcc.h> header file.
# Note that only 8/16/24/32 bpp RGB formats are supported.
pixelformat=XR24
# The DRI device
device=/dev/dri/card0
# The resolution of the display # The resolution of the display
# It is defined in dots (physical pixels) per inch # It is defined in dots (physical pixels) per inch
# The default value is 96. # The default value is 96.
dpi=96 dpi=96
#}}
#{{ifdef _MGIAL_LIBINPUT
[libinput]
seat=seat0
#}}
#{{ifdef _MGGAL_FBCON
[fbcon]
defaultmode=1024x768-16bpp
dpi=96
#}}
#{{ifdef _MGGAL_PCXVFB #{{ifdef _MGGAL_PCXVFB
[pc_xvfb] [pc_xvfb]
@@ -58,7 +86,19 @@ def_bgcolor=0x00FF00
double_buffer=enable double_buffer=enable
#}} #}}
#{{ifdef _MGIAL_RANDOM
[random]
logfile=/dev/null
eventtypes=mouse-keyboard-button-gesture
minkeycode=1
maxkeycode=128
minbtncode=0x100
maxbtncode=0x1ff
#}}
# The first system font must be a logical font using RBF device font. # The first system font must be a logical font using RBF device font.
# NOTE that the maxiaml number of system logfonts is 6. You should not
# set `font_number` in this section to be a number larger than 6.
[systemfont] [systemfont]
font_number=5 font_number=5
font0=rbf-FixedSys-rrncnn-8-16-ISO8859-1 font0=rbf-FixedSys-rrncnn-8-16-ISO8859-1
@@ -88,6 +128,10 @@ font_number=0
[truetypefonts] [truetypefonts]
font_number=0 font_number=0
# The devfont now supports multiple font family names since V4.0.0.
name0=ttf-Source Sans Pro,SansSerif-rrncnn-0-0-ISO8859-1,UTF-8
# The path of font file can be relative to the current working directory.
fontfile0=font/SourceSansPro-Regular.ttf
[mouse] [mouse]
dblclicktime=300 dblclicktime=300
+1 -1
View File
@@ -11,7 +11,7 @@ COMM_HDRS = \
common.h endianrw.h fixedmath.h \ common.h endianrw.h fixedmath.h \
minigui.h gdi.h window.h control.h \ minigui.h gdi.h window.h control.h \
own_malloc.h own_stdio.h \ own_malloc.h own_stdio.h \
xvfb.h customial.h \ xvfb.h customial.h exstubs.h \
dti.c dti.c
UCOSII_HDRS=ucos2_pthread.h ucos2_semaphore.h UCOSII_HDRS=ucos2_pthread.h ucos2_semaphore.h
+244 -28
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file common.h * \file common.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
@@ -727,7 +739,7 @@ typedef UINT_PTR LPARAM;
#define MAKEWORD16(low, high) ((WORD16)(((BYTE)(low)) | (((WORD16)((BYTE)(high))) << 8))) #define MAKEWORD16(low, high) ((WORD16)(((BYTE)(low)) | (((WORD16)((BYTE)(high))) << 8)))
/** /**
* \def MAKEWORD32(first, second, third, fourth) * \def MAKEDWORD32(first, second, third, fourth)
* \brief Makes a WORD32 value with four bytes. * \brief Makes a WORD32 value with four bytes.
* *
* \sa MAKEWORD16, FIRSTBYTE, SECONDBYTE, THIRDBYTE, FOURTHBYTE * \sa MAKEWORD16, FIRSTBYTE, SECONDBYTE, THIRDBYTE, FOURTHBYTE
@@ -1161,7 +1173,7 @@ typedef struct _GAL_Rect {
* *
* The number of MiniGUI keys is defined to 255 by default. This means that * The number of MiniGUI keys is defined to 255 by default. This means that
* MiniGUI can destinguish 255 different keys with each has an unique scan code. * MiniGUI can destinguish 255 different keys with each has an unique scan code.
* The scan codes below 129 are defined for PC keyboard by default. * The scan codes below 251 are defined for Linux keyboard keys by default.
* If your system has a large amount of keys, you can define the scan code of * If your system has a large amount of keys, you can define the scan code of
* keys ranged from 1 to 255 in your IAL engine. And your application will * keys ranged from 1 to 255 in your IAL engine. And your application will
* receive a MSG_KEYDOWN and MSG_KEYUP messages when a key pressed and * receive a MSG_KEYDOWN and MSG_KEYUP messages when a key pressed and
@@ -1176,7 +1188,7 @@ typedef struct _GAL_Rect {
* \def NR_KEYS * \def NR_KEYS
* \brief The number of keys defined by Linux operating system. * \brief The number of keys defined by Linux operating system.
* *
* For a PC box, NR_KEYS is defined to 128 by default. You can define * For a Linux box, NR_KEYS is defined to 250 by default. You can define
* some input events from an input device other than keyboard, e.g. * some input events from an input device other than keyboard, e.g.
* your remote controller, as key events with different scan codes from * your remote controller, as key events with different scan codes from
* those of PC's. MiniGUI can support 255 keys, and the constant * those of PC's. MiniGUI can support 255 keys, and the constant
@@ -1185,7 +1197,7 @@ typedef struct _GAL_Rect {
* \sa MGUI_NR_KEYS * \sa MGUI_NR_KEYS
*/ */
#ifndef NR_KEYS #ifndef NR_KEYS
#define NR_KEYS 128 #define NR_KEYS 250
#endif #endif
/** /**
@@ -1206,7 +1218,9 @@ typedef struct _GAL_Rect {
*/ */
#define SCANCODE_USER (NR_KEYS + 1) #define SCANCODE_USER (NR_KEYS + 1)
#define SCANCODE_RESERVED 0
#define SCANCODE_ESCAPE 1 #define SCANCODE_ESCAPE 1
#define SCANCODE_ESC SCANCODE_ESCAPE
#define SCANCODE_1 2 #define SCANCODE_1 2
#define SCANCODE_2 3 #define SCANCODE_2 3
@@ -1236,11 +1250,14 @@ typedef struct _GAL_Rect {
#define SCANCODE_O 24 #define SCANCODE_O 24
#define SCANCODE_P 25 #define SCANCODE_P 25
#define SCANCODE_BRACKET_LEFT 26 #define SCANCODE_BRACKET_LEFT 26
#define SCANCODE_LEFTBRACE SCANCODE_BRACKET_LEFT
#define SCANCODE_BRACKET_RIGHT 27 #define SCANCODE_BRACKET_RIGHT 27
#define SCANCODE_RIGHTBRACE SCANCODE_BRACKET_RIGHT
#define SCANCODE_ENTER 28 #define SCANCODE_ENTER 28
#define SCANCODE_LEFTCONTROL 29 #define SCANCODE_LEFTCONTROL 29
#define SCANCODE_LEFTCTRL SCANCODE_LEFTCONTROL
#define SCANCODE_A 30 #define SCANCODE_A 30
#define SCANCODE_S 31 #define SCANCODE_S 31
@@ -1254,7 +1271,6 @@ typedef struct _GAL_Rect {
#define SCANCODE_SEMICOLON 39 #define SCANCODE_SEMICOLON 39
#define SCANCODE_APOSTROPHE 40 #define SCANCODE_APOSTROPHE 40
#define SCANCODE_GRAVE 41 #define SCANCODE_GRAVE 41
#define SCANCODE_LEFTSHIFT 42 #define SCANCODE_LEFTSHIFT 42
#define SCANCODE_BACKSLASH 43 #define SCANCODE_BACKSLASH 43
@@ -1267,11 +1283,11 @@ typedef struct _GAL_Rect {
#define SCANCODE_M 50 #define SCANCODE_M 50
#define SCANCODE_COMMA 51 #define SCANCODE_COMMA 51
#define SCANCODE_PERIOD 52 #define SCANCODE_PERIOD 52
#define SCANCODE_DOT SCANCODE_PERIOD
#define SCANCODE_SLASH 53 #define SCANCODE_SLASH 53
#define SCANCODE_RIGHTSHIFT 54 #define SCANCODE_RIGHTSHIFT 54
#define SCANCODE_KEYPADMULTIPLY 55 #define SCANCODE_KEYPADMULTIPLY 55
#define SCANCODE_KPASTERISK SCANCODE_KEYPADMULTIPLY
#define SCANCODE_LEFTALT 56 #define SCANCODE_LEFTALT 56
#define SCANCODE_SPACE 57 #define SCANCODE_SPACE 57
#define SCANCODE_CAPSLOCK 58 #define SCANCODE_CAPSLOCK 58
@@ -1291,66 +1307,264 @@ typedef struct _GAL_Rect {
#define SCANCODE_SCROLLLOCK 70 #define SCANCODE_SCROLLLOCK 70
#define SCANCODE_KEYPAD7 71 #define SCANCODE_KEYPAD7 71
#define SCANCODE_KP7 SCANCODE_KEYPAD7
#define SCANCODE_CURSORUPLEFT 71 #define SCANCODE_CURSORUPLEFT 71
#define SCANCODE_KEYPAD8 72 #define SCANCODE_KEYPAD8 72
#define SCANCODE_KP8 SCANCODE_KEYPAD8
#define SCANCODE_CURSORUP 72 #define SCANCODE_CURSORUP 72
#define SCANCODE_KEYPAD9 73 #define SCANCODE_KEYPAD9 73
#define SCANCODE_KP9 SCANCODE_KEYPAD9
#define SCANCODE_CURSORUPRIGHT 73 #define SCANCODE_CURSORUPRIGHT 73
#define SCANCODE_KEYPADMINUS 74 #define SCANCODE_KEYPADMINUS 74
#define SCANCODE_KPMINUS SCANCODE_KEYPADMINUS
#define SCANCODE_KEYPAD4 75 #define SCANCODE_KEYPAD4 75
#define SCANCODE_KP4 SCANCODE_KEYPAD4
#define SCANCODE_CURSORLEFT 75 #define SCANCODE_CURSORLEFT 75
#define SCANCODE_KEYPAD5 76 #define SCANCODE_KEYPAD5 76
#define SCANCODE_KP5 SCANCODE_KEYPAD5
#define SCANCODE_KEYPAD6 77 #define SCANCODE_KEYPAD6 77
#define SCANCODE_KP6 SCANCODE_KEYPAD6
#define SCANCODE_CURSORRIGHT 77 #define SCANCODE_CURSORRIGHT 77
#define SCANCODE_KEYPADPLUS 78 #define SCANCODE_KEYPADPLUS 78
#define SCANCODE_KPPLUS SCANCODE_KEYPADPLUS
#define SCANCODE_KEYPAD1 79 #define SCANCODE_KEYPAD1 79
#define SCANCODE_KP1 SCANCODE_KEYPAD1
#define SCANCODE_CURSORDOWNLEFT 79 #define SCANCODE_CURSORDOWNLEFT 79
#define SCANCODE_KEYPAD2 80 #define SCANCODE_KEYPAD2 80
#define SCANCODE_KP2 SCANCODE_KEYPAD2
#define SCANCODE_CURSORDOWN 80 #define SCANCODE_CURSORDOWN 80
#define SCANCODE_KEYPAD3 81 #define SCANCODE_KEYPAD3 81
#define SCANCODE_KP3 SCANCODE_KEYPAD3
#define SCANCODE_CURSORDOWNRIGHT 81 #define SCANCODE_CURSORDOWNRIGHT 81
#define SCANCODE_KEYPAD0 82 #define SCANCODE_KEYPAD0 82
#define SCANCODE_KP0 SCANCODE_KEYPAD0
#define SCANCODE_KEYPADPERIOD 83 #define SCANCODE_KEYPADPERIOD 83
#define SCANCODE_KPDOT SCANCODE_KEYPADPERIOD
#define SCANCODE_ZENKAKUHANKAKU 85
#define SCANCODE_LESS 86 #define SCANCODE_LESS 86
#define SCANCODE_102ND SCANCODE_LESS
#define SCANCODE_F11 87 #define SCANCODE_F11 87
#define SCANCODE_F12 88 #define SCANCODE_F12 88
#define SCANCODE_RO 89
#define SCANCODE_KATAKANA 90
#define SCANCODE_HIRAGANA 91
#define SCANCODE_HENKAN 92
#define SCANCODE_KATAKANAHIRAGANA 93
#define SCANCODE_MUHENKAN 94
#define SCANCODE_KPJPCOMMA 95
#define SCANCODE_KEYPADENTER 96 #define SCANCODE_KEYPADENTER 96
#define SCANCODE_KPENTER SCANCODE_KEYPADENTER
#define SCANCODE_RIGHTCONTROL 97 #define SCANCODE_RIGHTCONTROL 97
#define SCANCODE_RIGHTCTRL SCANCODE_RIGHTCONTROL
#define SCANCODE_CONTROL 97 #define SCANCODE_CONTROL 97
#define SCANCODE_KEYPADDIVIDE 98 #define SCANCODE_KEYPADDIVIDE 98
#define SCANCODE_KPSLASH SCANCODE_KEYPADDIVIDE
#define SCANCODE_PRINTSCREEN 99 #define SCANCODE_PRINTSCREEN 99
#define SCANCODE_SYSRQ SCANCODE_PRINTSCREEN
#define SCANCODE_RIGHTALT 100 #define SCANCODE_RIGHTALT 100
#define SCANCODE_BREAK 101 /* Beware: is 119 */ #define SCANCODE_LINEFEED 101
#define SCANCODE_BREAK_ALTERNATIVE 119 /* on some keyboards! */
#define SCANCODE_HOME 102 #define SCANCODE_HOME 102
#define SCANCODE_CURSORBLOCKUP 103 /* Cursor key block */ #define SCANCODE_CURSORBLOCKUP 103 /* Cursor key block */
#define SCANCODE_UP SCANCODE_CURSORBLOCKUP
#define SCANCODE_PAGEUP 104 #define SCANCODE_PAGEUP 104
#define SCANCODE_CURSORBLOCKLEFT 105 /* Cursor key block */ #define SCANCODE_CURSORBLOCKLEFT 105 /* Cursor key block */
#define SCANCODE_LEFT SCANCODE_CURSORBLOCKLEFT
#define SCANCODE_CURSORBLOCKRIGHT 106 /* Cursor key block */ #define SCANCODE_CURSORBLOCKRIGHT 106 /* Cursor key block */
#define SCANCODE_RIGHT SCANCODE_CURSORBLOCKRIGHT
#define SCANCODE_END 107 #define SCANCODE_END 107
#define SCANCODE_CURSORBLOCKDOWN 108 /* Cursor key block */ #define SCANCODE_CURSORBLOCKDOWN 108 /* Cursor key block */
#define SCANCODE_DOWN SCANCODE_CURSORBLOCKDOWN
#define SCANCODE_PAGEDOWN 109 #define SCANCODE_PAGEDOWN 109
#define SCANCODE_INSERT 110 #define SCANCODE_INSERT 110
#define SCANCODE_REMOVE 111 #define SCANCODE_REMOVE 111
#define SCANCODE_DELETE SCANCODE_REMOVE
#define SCANCODE_PAUSE 119 #define SCANCODE_MACRO 112
#define SCANCODE_MUTE 113
#define SCANCODE_POWER 120 #define SCANCODE_VOLUMEDOWN 114
#define SCANCODE_SLEEP 121 #define SCANCODE_VOLUMEUP 115
#define SCANCODE_WAKEUP 122 #define SCANCODE_POWER 116 /* SC System Power Down */
#define SCANCODE_KPEQUAL 117
#define SCANCODE_KPPLUSMINUS 118
#define SCANCODE_BREAK 119
#define SCANCODE_BREAK_ALTERNATIVE SCANCODE_BREAK
#define SCANCODE_PAUSE SCANCODE_BREAK
#define SCANCODE_SCALE 120 /* AL Compiz Scale (Expose) */
#define SCANCODE_KPCOMMA 121
#define SCANCODE_HANGEUL 122
#define SCANCODE_HANJA 123
#define SCANCODE_YEN 124
#define SCANCODE_LEFTWIN 125 #define SCANCODE_LEFTWIN 125
#define SCANCODE_LEFTMETA SCANCODE_LEFTWIN
#define SCANCODE_RIGHTWIN 126 #define SCANCODE_RIGHTWIN 126
#define SCANCODE_MENU 127 #define SCANCODE_RIGHTMETA SCANCODE_RIGHTWIN
#define SCANCODE_COMPOSE 127
#define SCANCODE_STOP 128 /* AC Stop */
#define SCANCODE_AGAIN 129
#define SCANCODE_PROPS 130 /* AC Properties */
#define SCANCODE_UNDO 131 /* AC Undo */
#define SCANCODE_FRONT 132
#define SCANCODE_COPY 133 /* AC Copy */
#define SCANCODE_OPEN 134 /* AC Open */
#define SCANCODE_PASTE 135 /* AC Paste */
#define SCANCODE_FIND 136 /* AC Search */
#define SCANCODE_CUT 137 /* AC Cut */
#define SCANCODE_HELP 138 /* AL Integrated Help Center */
#define SCANCODE_MENU 139 /* Menu (show menu) */
#define SCANCODE_CALC 140 /* AL Calculator */
#define SCANCODE_SETUP 141
#define SCANCODE_SLEEP 142 /* SC System Sleep */
#define SCANCODE_WAKEUP 143 /* System Wake Up */
#define SCANCODE_FILE 144 /* AL Local Machine Browser */
#define SCANCODE_SENDFILE 145
#define SCANCODE_DELETEFILE 146
#define SCANCODE_XFER 147
#define SCANCODE_PROG1 148
#define SCANCODE_PROG2 149
#define SCANCODE_WWW 150 /* AL Internet Browser */
#define SCANCODE_MSDOS 151
#define SCANCODE_COFFEE 152 /* AL Terminal Lock/Screensaver */
#define SCANCODE_SCREENLOCK SCANCODE_COFFEE
#define SCANCODE_ROTATE_DISPLAY 153 /* Display orientation for e.g. tablets */
#define SCANCODE_DIRECTION SCANCODE_ROTATE_DISPLAY
#define SCANCODE_CYCLEWINDOWS 154
#define SCANCODE_MAIL 155
#define SCANCODE_BOOKMARKS 156 /* AC Bookmarks */
#define SCANCODE_COMPUTER 157
#define SCANCODE_BACK 158 /* AC Back */
#define SCANCODE_FORWARD 159 /* AC Forward */
#define SCANCODE_CLOSECD 160
#define SCANCODE_EJECTCD 161
#define SCANCODE_EJECTCLOSECD 162
#define SCANCODE_NEXTSONG 163
#define SCANCODE_PLAYPAUSE 164
#define SCANCODE_PREVIOUSSONG 165
#define SCANCODE_STOPCD 166
#define SCANCODE_RECORD 167
#define SCANCODE_REWIND 168
#define SCANCODE_PHONE 169 /* Media Select Telephone */
#define SCANCODE_ISO 170
#define SCANCODE_CONFIG 171 /* AL Consumer Control Configuration */
#define SCANCODE_HOMEPAGE 172 /* AC Home */
#define SCANCODE_REFRESH 173 /* AC Refresh */
#define SCANCODE_EXIT 174 /* AC Exit */
#define SCANCODE_MOVE 175
#define SCANCODE_EDIT 176
#define SCANCODE_SCROLLUP 177
#define SCANCODE_SCROLLDOWN 178
#define SCANCODE_KPLEFTPAREN 179
#define SCANCODE_KPRIGHTPAREN 180
#define SCANCODE_NEW 181 /* AC New */
#define SCANCODE_REDO 182 /* AC Redo/Repeat */
#define SCANCODE_F13 183
#define SCANCODE_F14 184
#define SCANCODE_F15 185
#define SCANCODE_F16 186
#define SCANCODE_F17 187
#define SCANCODE_F18 188
#define SCANCODE_F19 189
#define SCANCODE_F20 190
#define SCANCODE_F21 191
#define SCANCODE_F22 192
#define SCANCODE_F23 193
#define SCANCODE_F24 194
#define SCANCODE_PLAYCD 200
#define SCANCODE_PAUSECD 201
#define SCANCODE_PROG3 202
#define SCANCODE_PROG4 203
#define SCANCODE_DASHBOARD 204 /* AL Dashboard */
#define SCANCODE_SUSPEND 205
#define SCANCODE_CLOSE 206 /* AC Close */
#define SCANCODE_PLAY 207
#define SCANCODE_FASTFORWARD 208
#define SCANCODE_BASSBOOST 209
#define SCANCODE_PRINT 210 /* AC Print */
#define SCANCODE_HP 211
#define SCANCODE_CAMERA 212
#define SCANCODE_SOUND 213
#define SCANCODE_QUESTION 214
#define SCANCODE_EMAIL 215
#define SCANCODE_CHAT 216
#define SCANCODE_SEARCH 217
#define SCANCODE_CONNECT 218
#define SCANCODE_FINANCE 219 /* AL Checkbook/Finance */
#define SCANCODE_SPORT 220
#define SCANCODE_SHOP 221
#define SCANCODE_ALTERASE 222
#define SCANCODE_CANCEL 223 /* AC Cancel */
#define SCANCODE_BRIGHTNESSDOWN 224
#define SCANCODE_BRIGHTNESSUP 225
#define SCANCODE_MEDIA 226
#define SCANCODE_SWITCHVIDEOMODE 227 /* Cycle between available video outputs (Monitor/LCD/TV-out/etc) */
#define SCANCODE_KBDILLUMTOGGLE 228
#define SCANCODE_KBDILLUMDOWN 229
#define SCANCODE_KBDILLUMUP 230
#define SCANCODE_SEND 231 /* AC Send */
#define SCANCODE_REPLY 232 /* AC Reply */
#define SCANCODE_FORWARDMAIL 233 /* AC Forward Msg */
#define SCANCODE_SAVE 234 /* AC Save */
#define SCANCODE_DOCUMENTS 235
#define SCANCODE_BATTERY 236
#define SCANCODE_BLUETOOTH 237
#define SCANCODE_WLAN 238
#define SCANCODE_UWB 239
#define SCANCODE_UNKNOWN 240
#define SCANCODE_VIDEO_NEXT 241 /* drive next video source */
#define SCANCODE_VIDEO_PREV 242 /* drive previous video source */
#define SCANCODE_BRIGHTNESS_CYCLE 243 /* brightness up, after max is min */
#define SCANCODE_BRIGHTNESS_AUTO 244 /* Set Auto Brightness: manual brightness control is off, rely on ambient */
#define SCANCODE_BRIGHTNESS_ZERO SCANCODE_BRIGHTNESS_AUTO
#define SCANCODE_DISPLAY_OFF 245 /* display device to off state */
#define SCANCODE_WWAN 246 /* Wireless WAN (LTE, UMTS, GSM, etc.) */
#define SCANCODE_WIMAX SCANCODE_WWAN
#define SCANCODE_RFKILL 247 /* Key that controls all radios */
#define SCANCODE_MICMUTE 248 /* Mute / unmute the microphone */
#define SCANCODE_LEFTBUTTON 0x1000 #define SCANCODE_LEFTBUTTON 0x1000
#define SCANCODE_RIGHTBUTTON 0x2000 #define SCANCODE_RIGHTBUTTON 0x2000
#define SCANCODE_MIDDLBUTTON 0x4000 #define SCANCODE_MIDDLBUTTON 0x4000
/**
* \def KS_LEFTMETA
* \brief This status indicate that left-Meta key was pressed when
* the key or mouse message posted to the window.
*
* \sa key_msgs
*
* Since 4.0.0
*/
#define KS_LEFTMETA 0x00002000
/**
* \def KS_RIGHTMETA
* \brief This status indicate that right-Meta key was pressed when
* the key or mouse message posted to the window.
*
* \sa key_msgs
*
* Since 4.0.0
*/
#define KS_RIGHTMETA 0x00001000
/**
* \def KS_META
* \brief This status indicate that either the left-Meta key or the right-Meta key
* was pressed when the key or mouse message posted to the window.
*
* \sa key_msgs
*
* Since 4.0.0
*/
#define KS_META 0x00003000
/** /**
* \def KS_REPEATED * \def KS_REPEATED
* \brief This status indicate that the key down message is an * \brief This status indicate that the key down message is an
@@ -1528,7 +1742,7 @@ typedef struct _GAL_Rect {
* \def MASK_KS_SHIFTKEYS * \def MASK_KS_SHIFTKEYS
* \brief The mask of key status. * \brief The mask of key status.
*/ */
#define MASK_KS_SHIFTKEYS 0x00000FFF #define MASK_KS_SHIFTKEYS 0x0000FFFF
/** /**
* \def KS_LEFTBUTTON * \def KS_LEFTBUTTON
@@ -1537,7 +1751,7 @@ typedef struct _GAL_Rect {
* *
* \sa key_msgs * \sa key_msgs
*/ */
#define KS_LEFTBUTTON 0x00001000 #define KS_LEFTBUTTON 0x00010000
/** /**
* \def KS_RIGHTBUTTON * \def KS_RIGHTBUTTON
@@ -1546,22 +1760,22 @@ typedef struct _GAL_Rect {
* *
* \sa key_msgs * \sa key_msgs
*/ */
#define KS_RIGHTBUTTON 0x00002000 #define KS_RIGHTBUTTON 0x00020000
/** /**
* \def KS_MIDDLBUTTON * \def KS_MIDDLEBUTTON
* \brief This status indicate that middle button was pressed when * \brief This status indicate that middle button was pressed when
* the key or mouse message posted to the window. * the key or mouse message posted to the window.
* *
* \sa key_msgs * \sa key_msgs
*/ */
#define KS_MIDDLBUTTON 0x00004000 #define KS_MIDDLEBUTTON 0x00040000
/** /**
* \def MASK_KS_BUTTONS * \def MASK_KS_BUTTONS
* \brief The mask of mouse button status. * \brief The mask of mouse button status.
*/ */
#define MASK_KS_BUTTONS 0x0000F000 #define MASK_KS_BUTTONS 0x000F0000
/** @} end of key_defs */ /** @} end of key_defs */
@@ -1749,7 +1963,7 @@ typedef struct _GAL_Rect {
#endif #endif
/* Commonly used definitions */ /* Commonly used definitions */
#if !defined(__NOUNIX__) || defined (__ECOS__) #ifdef HAVE_LIMITS_H
#include <limits.h> #include <limits.h>
#endif #endif
@@ -1784,12 +1998,10 @@ typedef struct _GAL_Rect {
/** @} end of macros_types */ /** @} end of macros_types */
#ifdef __cplusplus #ifdef HAVE_TIME
extern "C" { #include <time.h>
#endif #else
typedef unsigned long time_t;
#ifndef HAVE_TIME
typedef unsigned int time_t;
struct tm { struct tm {
int tm_sec; /* seconds [0,61] */ int tm_sec; /* seconds [0,61] */
@@ -1804,6 +2016,10 @@ struct tm {
}; };
#endif #endif
#ifdef __cplusplus
extern "C" {
#endif
#if defined (__THREADX__) && defined (__TARGET_VFANVIL__) #if defined (__THREADX__) && defined (__TARGET_VFANVIL__)
#include "fx_api.h" #include "fx_api.h"
#include "tx_api.h" #include "tx_api.h"
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file control.h * \file control.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file animation.h * \file animation.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file button.h * \file button.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file combobox.h * \file combobox.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file coolbar.h * \file coolbar.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file ctrlhelper.h * \file ctrlhelper.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file edit.h * \file edit.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file gridview.h * \file gridview.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file iconview.h * \file iconview.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file listbox.h * \file listbox.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file listview.h * \file listview.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file menubutton.h * \file menubutton.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file monthcal.h * \file monthcal.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file newtoolbar.h * \file newtoolbar.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file progressbar.h * \file progressbar.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file propsheet.h * \file propsheet.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file scrollbar.h * \file scrollbar.h
* \author wangjian * \author wangjian
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file scrollview.h * \file scrollview.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file spinbox.h * \file spinbox.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file static.h * \file static.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file textedit.h * \file textedit.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file trackbar.h * \file trackbar.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file treeview.h * \file treeview.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+158 -16
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file customial.h * \file customial.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
@@ -51,24 +63,148 @@
#ifndef GUI_IAL_CUSTOM_H #ifndef GUI_IAL_CUSTOM_H
#define GUI_IAL_CUSTOM_H #define GUI_IAL_CUSTOM_H
#ifdef __cplusplus #define IAL_MOUSE_LEFTBUTTON (1 << 0)
extern "C" { #define IAL_MOUSE_RIGHTBUTTON (1 << 1)
#endif /* __cplusplus */ #define IAL_MOUSE_MIDDLEBUTTON (1 << 2)
/* deprecated since 4.0.0
#define IAL_MOUSE_FOURTHBUTTON (1 << 3)
#define IAL_MOUSE_FIFTHBUTTON (1 << 4)
#define IAL_MOUSE_SIXTHBUTTON (1 << 5)
#define IAL_MOUSE_SEVENTHBUTTON (1 << 6)
#define IAL_MOUSE_EIGHTHBUTTON (1 << 7)
#define IAL_MOUSE_LEFTBUTTON 1 #define IAL_MOUSE_SIDEBUTTON IAL_MOUSE_FOURTHBUTTON
#define IAL_MOUSE_RIGHTBUTTON 2 #define IAL_MOUSE_EXTRABUTTON IAL_MOUSE_FIFTHBUTTON
#define IAL_MOUSE_MIDDLEBUTTON 4 #define IAL_MOUSE_FORWARDBUTTON IAL_MOUSE_SIXTHBUTTON
#define IAL_MOUSE_FOURTHBUTTON 8 #define IAL_MOUSE_BACKBUTTON IAL_MOUSE_SEVENTHBUTTON
#define IAL_MOUSE_FIFTHBUTTON 16 #define IAL_MOUSE_TASKBUTTON IAL_MOUSE_EIGHTHBUTTON
#define IAL_MOUSE_SIXTHBUTTON 32 #define IAL_MOUSE_RESETBUTTON IAL_MOUSE_EIGHTHBUTTON
#define IAL_MOUSE_RESETBUTTON 64 */
#define IAL_MOUSEEVENT 1 #define IAL_EVENT_MOUSE (1 << 0)
#define IAL_KEYEVENT 2 #define IAL_MOUSEEVENT IAL_EVENT_MOUSE
#define IAL_EVENT_KEY (1 << 1)
#define IAL_KEYEVENT IAL_EVENT_KEY
typedef struct tagINPUT #define IAL_EVENT_EXTRA (1 << 2)
{
/* The event identifiers, should keep sync with MSG_EXIN_XXX */
#ifndef AXIS_SCROLL_INVALID
#define AXIS_SCROLL_INVALID 0
#define AXIS_SCROLL_VERTICAL 1
#define AXIS_SCROLL_HORIZONTAL 2
#define AXIS_SOURCE_INVALID 0
#define AXIS_SOURCE_WHEEL 1
#define AXIS_SOURCE_FINGER 2
#define AXIS_SOURCE_CONTINUOUS 3
#define AXIS_SOURCE_WHEEL_TILT 4
#endif
#define IAL_EVENT_AXIS 0x0070
#define IAL_EVENT_BUTTONDOWN 0x0071
#define IAL_EVENT_BUTTONUP 0x0072
#define IAL_EVENT_TOUCH_DOWN 0x0073
#define IAL_EVENT_TOUCH_UP 0x0074
#define IAL_EVENT_TOUCH_MOTION 0x0075
#define IAL_EVENT_TOUCH_CANCEL 0x0076
#define IAL_EVENT_TOUCH_FRAME 0x0077
#ifndef SWITCH_INVALID
#define SWITCH_INVALID 0
#define SWITCH_LID 1
#define SWITCH_TABLET_MODE 2
#define SWITCH_STATE_INVALID 0
#define SWITCH_STATE_ON 1
#define SWITCH_STATE_OFF 2
#endif
#define IAL_EVENT_SWITCH_TOGGLE 0x007A
#define IAL_EVENT_GESTURE_SWIPE_BEGIN 0x0080
#define IAL_EVENT_GESTURE_SWIPE_UPDATE 0x0081
#define IAL_EVENT_GESTURE_SWIPE_END 0x0082
#define IAL_EVENT_GESTURE_PINCH_BEGIN 0x0083
#define IAL_EVENT_GESTURE_PINCH_UPDATE 0x0084
#define IAL_EVENT_GESTURE_PINCH_END 0x0085
#ifndef TABLET_TOOL_X
#define TABLET_TOOL_PROXIMITY_STATE_INVALID 0
#define TABLET_TOOL_PROXIMITY_STATE_OUT 1
#define TABLET_TOOL_PROXIMITY_STATE_IN 2
#define TABLET_TOOL_TIP_INVALID 0
#define TABLET_TOOL_TIP_UP 1
#define TABLET_TOOL_TIP_DOWN 2
#define TABLET_BUTTON_STATE_INVALID 0
#define TABLET_BUTTON_STATE_RELEASED 1
#define TABLET_BUTTON_STATE_PRESSED 2
#define TABLET_PAD_RING_SOURCE_UNKNOWN 0
#define TABLET_PAD_RING_SOURCE_FINGER 1
#define TABLET_PAD_STRIP_SOURCE_UNKNOWN 0
#define TABLET_PAD_STRIP_SOURCE_FINGER 1
#define TABLET_TOOL_CHANGED_X (1 << 0)
#define TABLET_TOOL_CHANGED_Y (1 << 1)
#define TABLET_TOOL_CHANGED_PRESSURE (1 << 2)
#define TABLET_TOOL_CHANGED_DISTANCE (1 << 3)
#define TABLET_TOOL_CHANGED_TILT_X (1 << 4)
#define TABLET_TOOL_CHANGED_TILT_Y (1 << 5)
#define TABLET_TOOL_CHANGED_ROTATION (1 << 6)
#define TABLET_TOOL_CHANGED_SLIDER (1 << 7)
#define TABLET_TOOL_CHANGED_SIZE_MAJOR (1 << 8)
#define TABLET_TOOL_CHANGED_SIZE_MINOR (1 << 9)
#define TABLET_TOOL_CHANGED_WHEEL (1 << 10)
#define TABLET_TOOL_X 0
#define TABLET_TOOL_Y 1
#define TABLET_TOOL_PRESSURE 2
#define TABLET_TOOL_DISTANCE 3
#define TABLET_TOOL_TILT_X 4
#define TABLET_TOOL_TILT_Y 5
#define TABLET_TOOL_ROTATION 6
#define TABLET_TOOL_SLIDER 7
#define TABLET_TOOL_SIZE_MAJOR 8
#define TABLET_TOOL_SIZE_MINOR 9
#define TABLET_TOOL_WHEEL 10
#endif
#define IAL_EVENT_TABLET_TOOL_AXIS 0x0090
#define IAL_EVENT_TABLET_TOOL_PROXIMITY 0x0091
#define IAL_EVENT_TABLET_TOOL_TIP 0x0092
#define IAL_EVENT_TABLET_TOOL_BUTTON 0x0093
#define IAL_EVENT_TABLET_PAD_BUTTON 0x0094
#define IAL_EVENT_TABLET_PAD_RING 0x0095
#define IAL_EVENT_TABLET_PAD_STRIP 0x0096
#define IAL_EVENT_USER_BEGIN 0x009A
#define IAL_EVENT_USER_UPDATE 0x009B
#define IAL_EVENT_USER_END 0x009C
#define NR_PACKED_SUB_EVENTS 16
typedef struct _EXTRA_INPUT_EVENT {
int event;
WPARAM wparam;
LPARAM lparam;
// for tablet tool messages
unsigned int params_mask;
WPARAM wparams[NR_PACKED_SUB_EVENTS];
LPARAM lparams[NR_PACKED_SUB_EVENTS];
} EXTRA_INPUT_EVENT;
#define IAL_LEN_MDEV 127
typedef struct tagINPUT {
char* id; char* id;
// Initialization and termination // Initialization and termination
@@ -91,13 +227,19 @@ typedef struct tagINPUT
int (*resume_keyboard) (void); int (*resume_keyboard) (void);
void (*set_leds) (unsigned int leds); void (*set_leds) (unsigned int leds);
// Event // Event loop
int (*wait_event) (int which, int maxfd, fd_set *in, fd_set *out, int (*wait_event) (int which, int maxfd, fd_set *in, fd_set *out,
fd_set *except, struct timeval *timeout); fd_set *except, struct timeval *timeout);
char mdev [MAX_PATH + 1]; // New wait event method for getting extra input events; since 4.0.0
int (*wait_event_ex) (int maxfd, fd_set *in, fd_set *out,
fd_set *except, struct timeval *timeout, EXTRA_INPUT_EVENT* extra);
} INPUT; } INPUT;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef _MGIAL_CUSTOM #ifdef _MGIAL_CUSTOM
extern BOOL InitCustomInput (INPUT* input, const char* mdev, const char* mtype); extern BOOL InitCustomInput (INPUT* input, const char* mdev, const char* mtype);
extern void TermCustomInput (void); extern void TermCustomInput (void);
+41 -5
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/* /*
* \file dti.c * \file dti.c
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
@@ -5,13 +17,37 @@
* *
\verbatim \verbatim
Copyright (C) 2002-2018 FMSoft This file is part of MiniGUI, a mature cross-platform windowing
Copyright (C) 1999-2002 Wei Yongming. and Graphics User Interface (GUI) support system for embedded systems
and smart IoT devices.
All rights reserved by Feynman Software. Copyright (C) 2002~2018, Beijing FMSoft Technologies Co., Ltd.
Copyright (C) 1998~2002, WEI Yongming
This file is part of MiniGUI, a compact cross-platform Graphics This program is free software: you can redistribute it and/or modify
User Interface (GUI) support system for real-time embedded systems. it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Or,
As this program is a library, any link to this program must follow
GNU General Public License version 3 (GPLv3). If you cannot accept
GPLv3, you need to be licensed from FMSoft.
If you have got a commercial license of this program, please use it
under the terms and conditions of the commercial license.
For more information about the commercial license, please refer to
<http://www.minigui.com/en/about/licensing-policy/>.
\endverbatim \endverbatim
*/ */
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file endianrw.h * \file endianrw.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+473
View File
@@ -0,0 +1,473 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/**
* \file exstubs.h
* \author Wei Yongming <vincent@minigui.org>
* \date 2019/04/07
*
* \brief This file is the header for NEWGAL/IAL engines which should be
* implemented by an external module.
*
\verbatim
This file is part of MiniGUI, a mature cross-platform windowing
and Graphics User Interface (GUI) support system for embedded systems
and smart IoT devices.
Copyright (C) 2007~2018, Beijing FMSoft Technologies Co., Ltd.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Or,
As this program is a library, any link to this program must follow
GNU General Public License version 3 (GPLv3). If you cannot accept
GPLv3, you need to be licensed from FMSoft.
If you have got a commercial license of this program, please use it
under the terms and conditions of the commercial license.
For more information about the commercial license, please refer to
<http://www.minigui.com/en/about/licensing-policy/>.
\endverbatim
*/
/*
* MiniGUI for Linux/uClinux, eCos, uC/OS-II, VxWorks,
* pSOS, ThreadX, NuCleus, OSE, and Win32.
*/
#ifndef GUI_EXSTUBS_H
#define GUI_EXSTUBS_H
/**
* \defgroup external_stubs External Stubs
*
* The stubs (callbacks) you need to implement for external target.
*
* @{
*/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#ifdef _MGGAL_DRI
#include <stdint.h>
/**
* \defgroup external_stubs_dri External Stubs for DRI sub driver
*
* @{
*/
/**
* The struct type represents the DRI sub driver.
* The concrete struct should be defined by the driver.
*/
struct _DriDriver;
typedef struct _DriDriver DriDriver;
/**
* The struct type represents the bufffer can be used by
* MiniGUI NEWGAL engine for hardware surface.
*/
typedef struct _DriSurfaceBuffer {
uint32_t buff_id;
uint32_t width;
uint32_t height;
uint32_t pitch;
uint32_t drm_format;
uint16_t bpp:8;
uint16_t cpp:8;
uint8_t* pixels;
} DriSurfaceBuffer;
/**
* The color logic operations.
*/
enum DriColorLogicOp {
COLOR_LOGICOP_CLEAR = 0,
COLOR_LOGICOP_NOR = 1,
COLOR_LOGICOP_AND_INVERTED = 2,
COLOR_LOGICOP_COPY_INVERTED = 3,
COLOR_LOGICOP_AND_REVERSE = 4,
COLOR_LOGICOP_INVERT = 5,
COLOR_LOGICOP_XOR = 6,
COLOR_LOGICOP_NAND = 7,
COLOR_LOGICOP_AND = 8,
COLOR_LOGICOP_EQUIV = 9,
COLOR_LOGICOP_NOOP = 10,
COLOR_LOGICOP_OR_INVERTED = 11,
COLOR_LOGICOP_COPY = 12,
COLOR_LOGICOP_OR_REVERSE = 13,
COLOR_LOGICOP_OR = 14,
COLOR_LOGICOP_SET = 15
};
/**
* The struct type defines the operations for a DRI driver.
*/
typedef struct _DriDriverOps {
/**
* This operation creates the DriDriver object.
*
* \note The driver must implement this operation.
*/
DriDriver* (*create_driver) (int device_fd);
/**
* This operation destroies the DriDriver object.
*
* \note The driver must implement this operation.
*/
void (*destroy_driver) (DriDriver *driver);
/**
* This operation flushs the batch buffer of the driver or the hardware cache.
*
* \note This operation can be NULL.
*/
void (* flush_driver) (DriDriver *driver);
/**
* This operation creates a buffer with the specified pixel format,
* width, and height. If succeed, a valid (not zero) buffer identifier
* and the picth (row stride in bytes) will be returned.
* If failed, it returns 0.
*
* \note The driver must implement this operation.
*/
uint32_t (* create_buffer) (DriDriver *driver,
uint32_t drm_format,
unsigned int width, unsigned int height,
unsigned int *pitch);
BOOL (* fetch_buffer) (DriDriver *driver,
uint32_t buffer_id,
unsigned int *width, unsigned int *height,
unsigned int *pitch);
/**
* This operation maps the buffer into the current process's virtual memory
* space, and returns the virtual address. If failed, it returns NULL.
*
* \note The driver must implement this operation.
*/
DriSurfaceBuffer* (* map_buffer) (DriDriver *driver,
uint32_t buffer_id);
/**
* This operation un-maps a buffer.
*
* \note The driver must implement this operation.
*/
void (* unmap_buffer) (DriDriver *driver, DriSurfaceBuffer* buffer);
/**
* This operation destroies a buffer.
*
* \note The driver must implement this operation.
*/
void (* destroy_buffer) (DriDriver *driver, uint32_t buffer_id);
/**
* This operation clears the specific rectangle area of a buffer
* with the specific pixel value. If succeed, it returns 0.
*
* \note If this operation is set as NULL, the driver does not support
* hardware accelerated clear operation.
*/
int (* clear_buffer) (DriDriver *driver,
DriSurfaceBuffer* dst_buf, const GAL_Rect* rc, uint32_t pixel_value);
/**
* This operation checks whether a hardware accelerated blit
* can be done between the source buffer and the destination buffer.
* If succeed, it returns 0.
*
* \note If this operation is set as NULL, it will be supposed that
* the driver does not support any hardware accelerated blit operation.
*/
int (* check_blit) (DriDriver *driver,
DriSurfaceBuffer* src_buf, DriSurfaceBuffer* dst_buf);
/**
* This operation copies bits from a source buffer to a destination buffer.
*
* \note If this operation is set as NULL, the driver does not support
* hardware accelerated copy blit.
*/
int (* copy_blit) (DriDriver *driver,
DriSurfaceBuffer* src_buf, const GAL_Rect* src_rc,
DriSurfaceBuffer* dst_buf, const GAL_Rect* dst_rc,
enum DriColorLogicOp logic_op);
/**
* This operation blits pixles from a source buffer with the source alpha value
* specified to a destination buffer.
*
* \note If this operation is set as NULL, the driver does not support
* hardware accelerated blit with alpha.
*/
int (* alpha_blit) (DriDriver *driver,
DriSurfaceBuffer* src_buf, const GAL_Rect* src_rc,
DriSurfaceBuffer* dst_buf, const GAL_Rect* dst_rc, uint8_t alpha);
/**
* This operation blits pixles from a source buffer to a destination buffer,
* but skipping the pixel value specified by \a color_key.
*
* \note If this operation is set as NULL, the driver does not support
* hardware accelerated blit with color key.
*/
int (* key_blit) (DriDriver *driver,
DriSurfaceBuffer* src_buf, const GAL_Rect* src_rc,
DriSurfaceBuffer* dst_buf, const GAL_Rect* dst_rc, uint32_t color_key);
/**
* This operation blits pixles from a source buffer with the source alpha value
* specified to a destination buffer, but skipping the pixel value specified.
*
* \note If this operation is set as NULL, the driver does not support
* hardware accelerated blit with alpha and color key.
*/
int (* alpha_key_blit) (DriDriver *driver,
DriSurfaceBuffer* src_buf, const GAL_Rect* src_rc,
DriSurfaceBuffer* dst_buf, const GAL_Rect* dst_rc,
uint8_t alpha, uint32_t color_key);
} DriDriverOps;
/** Implement this stub to return the DRI driver operations */
DriDriverOps* __dri_ex_driver_get (const char* driver_name);
/** @} end of external_stubs_dri */
#endif /* _MGGAL_DRI */
#ifdef _MGGAL_COMMLCD
/**
* \defgroup external_stubs_commlcd External Stubs for CommLCD NEWGAL Engine
*
* The external stubs for COMMLCD NEWGAL engine.
*
* @{
*/
/* The pixel format defined by depth */
#define COMMLCD_PSEUDO_RGB332 1
#define COMMLCD_TRUE_RGB555 2
#define COMMLCD_TRUE_RGB565 3
#define COMMLCD_TRUE_RGB888 4
#define COMMLCD_TRUE_RGB0888 5
#define COMMLCD_TRUE_ARGB1555 6
#define COMMLCD_TRUE_ARGB8888 7
#define COMMLCD_TRUE_ABRG8888 8
#define COMMLCD_UPDATE_NONE 0
#define COMMLCD_UPDATE_SYNC 1
#define COMMLCD_UPDATE_ASYNC 2
/**
* The structue represented the screen information of CommmLCD engine.
*/
struct commlcd_info {
/** The vertical resolution of the screen. */
int height;
/** The horizontal resolution of the screen. */
int width;
/** The length of one scan line in bytes. */
int pitch;
/** The color depth (bits-per-pixel). */
int bpp;
/**
* The pixel type, can be one of the following values:
* - COMMLCD_PSEUDO_RGB332
* - COMMLCD_TRUE_RGB555
* - COMMLCD_TRUE_RGB565
* - COMMLCD_TRUE_RGB888
* - COMMLCD_TRUE_RGB0888
* - COMMLCD_TRUE_ARGB1555
* - COMMLCD_TRUE_ARGB8888
* - COMMLCD_TRUE_ABRG8888
*/
int type;
/**
* The update method, can be one of the following values:
* - COMMLCD_UPDATE_NONE\n
* No update method.
* - COMMLCD_UPDATE_SYNC
* The update method should be called synchronously.
* - COMMLCD_UPDATE_ASYNC
* The update method should be called asynchronously.
*/
int update_method;
/**
* The pointer to the frame buffer of the screen.
*/
Uint8* fb;
};
/**
* Implement this stub to initialize the CommLCD engine.
* Return 0 for success.
*/
int __commlcd_drv_init (void);
/**
* Implement this stub to initialize the CommLCD engine.
*
* \param li The pointer to struct commlcd_info. This structure
* will be used to return the LCD surface information.
* \param width The desired horizontal resolution of the screen.
* \param height The desired vertical resolution of the screen.
* \param depth The desired depth of the screen.
*
* Return 0 for success, otherwise for failure.
*/
int __commlcd_drv_getinfo (struct commlcd_info *li,
int width, int height, int depth);
/**
* Implement this stub to release (destroy) the CommLCD engine.
*
* Return 0 for success, otherwise for failure.
*/
int __commlcd_drv_release (void);
/**
* Implement this stub to set the pallete when the pixel type
* is COMMLCD_PSEUDO_RGB332.
*
* \param firstcolor
* The index value of the first entry of the pallete.
* \param ncolors
* The number of entries of the pallete.
* \param colors
* The array of the colors for each entries in the pallete.
*
* Return 0 for success, otherwise for failure.
*/
int __commlcd_drv_setclut (int firstcolor, int ncolors, GAL_Color *colors);
/**
* Implement this stub to update the screen.
*
* \param rc_dirty The rectangle contains the dirty region.
*
* Return 0 for success, otherwise for failure.
*/
int __commlcd_drv_update (const RECT* rc_dirty);
/** @} end of external_stubs_commlcd */
#endif /* _MGGAL_COMMLCD */
#ifdef _MGIAL_COMM
/**
* \defgroup external_stubs_commial External Stubs for COMM IAL Engine
*
* The external stubs for COMM IAL engine
*
* @{
*/
#define COMM_MOUSEINPUT 0x01
#define COMM_KBINPUT 0x02
#define COMM_MOUSELBUTTON 0x01
#define COMM_MOUSERBUTTON 0x04
/**
* Implement this stub to initialize the COMM IAL engine.
* Return 0 for success, otherwise for failure.
*/
int __comminput_init (void);
/**
* Implement this stub to return the mouse event data.
* The implementation should return the position of mouse or touch,
* and the button status through the pointers \a x, \a y, and \a button.
* The position should be in absolute coordinates, and the button
* will have \a COMM_MOUSELBUTTON set if left button was pressed,
* and \a COMM_MOUSERBUTTON set if right button was pressed.
*
* Return 0 for success, otherwise for failure.
*/
int __comminput_ts_getdata (short *x, short *y, short *button);
/**
* Implement this stub to return the keyboard event data.
* The implementation should return the key scancode pressed or released
* through the pointer \a key, and the pressed or released status of the
* key through \a status.
*
* Return 0 for success, otherwise for failure.
*/
int __comminput_kb_getdata (short *key, short *status);
/**
* Implement this stub to wait for an event.
*
* \retval 0
* The timeout period expires.
* \retval COMM_MOUSEINPUT
* There is an mouse moved, button pressed, or button released event.
* \retval COMM_KBINPUT
* There is a key pressed or released event.
* \retval others
* Failed.
*/
int __comminput_wait_for_input (struct timeval *timeout);
/**
* Implement this stub to de-initialize the COMM IAL engine.
*/
void __comminput_deinit (void);
/** @} end of external_stubs_commial */
#endif /* _MGIAL_COMM */
#ifdef __cplusplus
}
#endif /* __cplusplus */
/** @} end of external_stubs */
#endif /* GUI_EXSTUBS_H */
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file fixedmath.h * \file fixedmath.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+872 -515
View File
File diff suppressed because it is too large Load Diff
+239 -163
View File
File diff suppressed because it is too large Load Diff
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file nucleus_pthread.h * \file nucleus_pthread.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/* /*
* \file nucleus_semaphore.h * \file nucleus_semaphore.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/* /*
* \file ose_semaphore.h * \file ose_semaphore.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/* /*
Default header file for malloc-2.7.2, written by Doug Lea Default header file for malloc-2.7.2, written by Doug Lea
and released to the public domain. Use, modify, and redistribute and released to the public domain. Use, modify, and redistribute
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file own_stdio.h * \file own_stdio.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>
+12
View File
@@ -1,3 +1,15 @@
///////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/** /**
* \file psos.h * \file psos.h
* \author Wei Yongming <vincent@minigui.org> * \author Wei Yongming <vincent@minigui.org>

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