summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers')
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/.gitignore1
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/display_indev.h28
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.c96
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.h73
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/linux_display_indev.c319
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/system_header.h9
6 files changed, 526 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/.gitignore b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/.gitignore
new file mode 100644
index 000000000..2372cca06
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/.gitignore
@@ -0,0 +1 @@
+**/*.o \ No newline at end of file
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/display_indev.h b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/display_indev.h
new file mode 100644
index 000000000..95136e285
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/display_indev.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2019 Intel Corporation. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ */
+
+#ifndef DISPLAY_INDEV_H_
+#define DISPLAY_INDEV_H_
+#include <stdio.h>
+#include <inttypes.h>
+#include "mouse.h"
+#include "lvgl/lv_misc/lv_color.h"
+#include "lvgl/lv_hal/lv_hal_indev.h"
+extern void
+display_init(void);
+extern void
+display_flush(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
+ const lv_color_t *color_p);
+extern bool
+display_input_read(lv_indev_data_t *data);
+extern void
+display_deinit(void);
+extern void
+display_vdb_write(void *buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
+ lv_color_t *color, lv_opa_t opa);
+extern int
+time_get_ms();
+
+#endif
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.c
new file mode 100644
index 000000000..848b2eca2
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.c
@@ -0,0 +1,96 @@
+/**
+ * @file mouse.c
+ *
+ */
+
+/*********************
+ * INCLUDES
+ *********************/
+#include "mouse.h"
+#if USE_MOUSE != 0
+
+/*********************
+ * DEFINES
+ *********************/
+#ifndef MONITOR_ZOOM
+#define MONITOR_ZOOM 1
+#endif
+
+/**********************
+ * TYPEDEFS
+ **********************/
+
+/**********************
+ * STATIC PROTOTYPES
+ **********************/
+
+/**********************
+ * STATIC VARIABLES
+ **********************/
+static bool left_button_down = false;
+static int16_t last_x = 0;
+static int16_t last_y = 0;
+
+/**********************
+ * MACROS
+ **********************/
+
+/**********************
+ * GLOBAL FUNCTIONS
+ **********************/
+
+/**
+ * Initialize the mouse
+ */
+void
+mouse_init(void)
+{}
+
+/**
+ * Get the current position and state of the mouse
+ * @param data store the mouse data here
+ * @return false: because the points are not buffered, so no more data to be
+ * read
+ */
+bool
+mouse_read(lv_indev_data_t *data)
+{
+ /*Store the collected data*/
+ data->point.x = last_x;
+ data->point.y = last_y;
+ data->state = left_button_down ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
+
+ return false;
+}
+
+/**
+ * It will be called from the main SDL thread
+ */
+void
+mouse_handler(SDL_Event *event)
+{
+ switch (event->type) {
+ case SDL_MOUSEBUTTONUP:
+ if (event->button.button == SDL_BUTTON_LEFT)
+ left_button_down = false;
+ break;
+ case SDL_MOUSEBUTTONDOWN:
+ if (event->button.button == SDL_BUTTON_LEFT) {
+ left_button_down = true;
+ last_x = event->motion.x / MONITOR_ZOOM;
+ last_y = event->motion.y / MONITOR_ZOOM;
+ }
+ break;
+ case SDL_MOUSEMOTION:
+ last_x = event->motion.x / MONITOR_ZOOM;
+ last_y = event->motion.y / MONITOR_ZOOM;
+
+ break;
+ }
+}
+
+/**********************
+ * STATIC FUNCTIONS
+ **********************/
+
+#endif
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.h b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.h
new file mode 100644
index 000000000..07e492f96
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/indev/mouse.h
@@ -0,0 +1,73 @@
+/**
+ * @file mouse.h
+ *
+ */
+
+#ifndef MOUSE_H
+#define MOUSE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*********************
+ * INCLUDES
+ *********************/
+
+#include "lv_drv_conf.h"
+
+#if USE_MOUSE
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "lvgl/lv_hal/lv_hal_indev.h"
+
+#ifndef MONITOR_SDL_INCLUDE_PATH
+#define MONITOR_SDL_INCLUDE_PATH <SDL2/SDL.h>
+#endif
+
+#include MONITOR_SDL_INCLUDE_PATH
+
+/*********************
+ * DEFINES
+ *********************/
+
+/**********************
+ * TYPEDEFS
+ **********************/
+
+/**********************
+ * GLOBAL PROTOTYPES
+ **********************/
+
+/**
+ * Initialize the mouse
+ */
+void
+mouse_init(void);
+/**
+ * Get the current position and state of the mouse
+ * @param data store the mouse data here
+ * @return false: because the points are not buffered, so no more data to be
+ * read
+ */
+bool
+mouse_read(lv_indev_data_t *data);
+
+/**
+ * It will be called from the main SDL thread
+ */
+void
+mouse_handler(SDL_Event *event);
+
+/**********************
+ * MACROS
+ **********************/
+
+#endif /* USE_MOUSE */
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* MOUSE_H */
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/linux_display_indev.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/linux_display_indev.c
new file mode 100644
index 000000000..bd5071067
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/linux_display_indev.c
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2019 Intel Corporation. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ */
+
+#include <stdio.h>
+#include <stdbool.h>
+#include "display_indev.h"
+#include "sys/time.h"
+#include "SDL2/SDL.h"
+#define MONITOR_HOR_RES 320
+#define MONITOR_VER_RES 240
+#ifndef MONITOR_ZOOM
+#define MONITOR_ZOOM 1
+#endif
+#define SDL_REFR_PERIOD 50
+void
+monitor_sdl_init(void);
+void
+monitor_sdl_refr_core(void);
+void
+monitor_sdl_clean_up(void);
+static uint32_t tft_fb[MONITOR_HOR_RES * MONITOR_VER_RES];
+
+void
+display_vdb_write(void *buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
+ lv_color_t *color, lv_opa_t opa)
+{
+ unsigned char *buf_xy = buf + 4 * x + 4 * y * buf_w;
+ lv_color_t *temp = (lv_color_t *)buf_xy;
+ *temp = *color;
+ /*
+ if (opa != LV_OPA_COVER) {
+ lv_color_t mix_color;
+
+ mix_color.red = *buf_xy;
+ mix_color.green = *(buf_xy+1);
+ mix_color.blue = *(buf_xy+2);
+ color = lv_color_mix(color, mix_color, opa);
+ }
+ */
+}
+int
+time_get_ms()
+{
+ static struct timeval tv;
+ gettimeofday(&tv, NULL);
+ long long time_in_mill = (tv.tv_sec) * 1000 + (tv.tv_usec) / 1000;
+
+ return (int)time_in_mill;
+}
+
+SDL_Window *window;
+SDL_Renderer *renderer;
+SDL_Texture *texture;
+static volatile bool sdl_inited = false;
+static volatile bool sdl_refr_qry = false;
+static volatile bool sdl_quit_qry = false;
+
+void
+monitor_flush(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
+ const lv_color_t *color_p)
+{
+ /*Return if the area is out the screen*/
+ if (x2 < 0 || y2 < 0 || x1 > MONITOR_HOR_RES - 1
+ || y1 > MONITOR_VER_RES - 1) {
+ return;
+ }
+
+ int32_t y;
+ uint32_t w = x2 - x1 + 1;
+ for (y = y1; y <= y2; y++) {
+ memcpy(&tft_fb[y * MONITOR_HOR_RES + x1], color_p,
+ w * sizeof(lv_color_t));
+
+ color_p += w;
+ }
+ sdl_refr_qry = true;
+
+ /*IMPORTANT! It must be called to tell the system the flush is ready*/
+}
+
+/**
+ * Fill out the marked area with a color
+ * @param x1 left coordinate
+ * @param y1 top coordinate
+ * @param x2 right coordinate
+ * @param y2 bottom coordinate
+ * @param color fill color
+ */
+void
+monitor_fill(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t color)
+{
+ /*Return if the area is out the screen*/
+ if (x2 < 0)
+ return;
+ if (y2 < 0)
+ return;
+ if (x1 > MONITOR_HOR_RES - 1)
+ return;
+ if (y1 > MONITOR_VER_RES - 1)
+ return;
+
+ /*Truncate the area to the screen*/
+ int32_t act_x1 = x1 < 0 ? 0 : x1;
+ int32_t act_y1 = y1 < 0 ? 0 : y1;
+ int32_t act_x2 = x2 > MONITOR_HOR_RES - 1 ? MONITOR_HOR_RES - 1 : x2;
+ int32_t act_y2 = y2 > MONITOR_VER_RES - 1 ? MONITOR_VER_RES - 1 : y2;
+
+ int32_t x;
+ int32_t y;
+ uint32_t color32 = color.full; // lv_color_to32(color);
+
+ for (x = act_x1; x <= act_x2; x++) {
+ for (y = act_y1; y <= act_y2; y++) {
+ tft_fb[y * MONITOR_HOR_RES + x] = color32;
+ }
+ }
+
+ sdl_refr_qry = true;
+}
+
+/**
+ * Put a color map to the marked area
+ * @param x1 left coordinate
+ * @param y1 top coordinate
+ * @param x2 right coordinate
+ * @param y2 bottom coordinate
+ * @param color_p an array of colors
+ */
+void
+monitor_map(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
+ const lv_color_t *color_p)
+{
+ /*Return if the area is out the screen*/
+ if (x2 < 0)
+ return;
+ if (y2 < 0)
+ return;
+ if (x1 > MONITOR_HOR_RES - 1)
+ return;
+ if (y1 > MONITOR_VER_RES - 1)
+ return;
+
+ /*Truncate the area to the screen*/
+ int32_t act_x1 = x1 < 0 ? 0 : x1;
+ int32_t act_y1 = y1 < 0 ? 0 : y1;
+ int32_t act_x2 = x2 > MONITOR_HOR_RES - 1 ? MONITOR_HOR_RES - 1 : x2;
+ int32_t act_y2 = y2 > MONITOR_VER_RES - 1 ? MONITOR_VER_RES - 1 : y2;
+
+ int32_t x;
+ int32_t y;
+
+ for (y = act_y1; y <= act_y2; y++) {
+ for (x = act_x1; x <= act_x2; x++) {
+ tft_fb[y * MONITOR_HOR_RES + x] =
+ color_p->full; // lv_color_to32(*color_p);
+ color_p++;
+ }
+
+ color_p += x2 - act_x2;
+ }
+
+ sdl_refr_qry = true;
+}
+
+void
+display_init(void)
+{}
+
+void
+display_flush(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
+ const lv_color_t *color_p)
+{
+ monitor_flush(x1, y1, x2, y2, color_p);
+}
+void
+display_fill(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t color_p)
+{
+ monitor_fill(x1, y1, x2, y2, color_p);
+}
+void
+display_map(int32_t x1, int32_t y1, int32_t x2, int32_t y2,
+ const lv_color_t *color_p)
+{
+ monitor_map(x1, y1, x2, y2, color_p);
+}
+
+bool
+display_input_read(lv_indev_data_t *data)
+{
+ return mouse_read(data);
+}
+
+void
+display_deinit(void)
+{}
+
+int
+monitor_sdl_refr_thread(void *param)
+{
+ (void)param;
+
+ /*If not OSX initialize SDL in the Thread*/
+ monitor_sdl_init();
+ /*Run until quit event not arrives*/
+ while (sdl_quit_qry == false) {
+ /*Refresh handling*/
+ monitor_sdl_refr_core();
+ }
+
+ monitor_sdl_clean_up();
+ exit(0);
+
+ return 0;
+}
+
+void
+monitor_sdl_refr_core(void)
+{
+ if (sdl_refr_qry != false) {
+ sdl_refr_qry = false;
+
+ SDL_UpdateTexture(texture, NULL, tft_fb,
+ MONITOR_HOR_RES * sizeof(uint32_t));
+ SDL_RenderClear(renderer);
+ /*Test: Draw a background to test transparent screens
+ * (LV_COLOR_SCREEN_TRANSP)*/
+ // SDL_SetRenderDrawColor(renderer, 0xff, 0, 0, 0xff);
+ // SDL_Rect r;
+ // r.x = 0; r.y = 0; r.w = MONITOR_HOR_RES; r.w =
+ // MONITOR_VER_RES; SDL_RenderDrawRect(renderer, &r);
+ /*Update the renderer with the texture containing the rendered image*/
+ SDL_RenderCopy(renderer, texture, NULL, NULL);
+ SDL_RenderPresent(renderer);
+ }
+
+ SDL_Event event;
+ while (SDL_PollEvent(&event)) {
+#if USE_MOUSE != 0
+ mouse_handler(&event);
+#endif
+ if ((&event)->type == SDL_WINDOWEVENT) {
+ switch ((&event)->window.event) {
+#if SDL_VERSION_ATLEAST(2, 0, 5)
+ case SDL_WINDOWEVENT_TAKE_FOCUS:
+#endif
+ case SDL_WINDOWEVENT_EXPOSED:
+
+ SDL_UpdateTexture(texture, NULL, tft_fb,
+ MONITOR_HOR_RES * sizeof(uint32_t));
+ SDL_RenderClear(renderer);
+ SDL_RenderCopy(renderer, texture, NULL, NULL);
+ SDL_RenderPresent(renderer);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ /*Sleep some time*/
+ SDL_Delay(SDL_REFR_PERIOD);
+}
+int
+quit_filter(void *userdata, SDL_Event *event)
+{
+ (void)userdata;
+
+ if (event->type == SDL_QUIT) {
+ sdl_quit_qry = true;
+ }
+
+ return 1;
+}
+
+void
+monitor_sdl_clean_up(void)
+{
+ SDL_DestroyTexture(texture);
+ SDL_DestroyRenderer(renderer);
+ SDL_DestroyWindow(window);
+ SDL_Quit();
+}
+
+void
+monitor_sdl_init(void)
+{
+ /*Initialize the SDL*/
+ SDL_Init(SDL_INIT_VIDEO);
+
+ SDL_SetEventFilter(quit_filter, NULL);
+
+ window = SDL_CreateWindow(
+ "TFT Simulator", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
+ MONITOR_HOR_RES * MONITOR_ZOOM, MONITOR_VER_RES * MONITOR_ZOOM,
+ 0); /*last param. SDL_WINDOW_BORDERLESS to hide borders*/
+
+ renderer = SDL_CreateRenderer(window, -1, 0);
+ texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888,
+ SDL_TEXTUREACCESS_STATIC, MONITOR_HOR_RES,
+ MONITOR_VER_RES);
+ SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
+
+ /*Initialize the frame buffer to gray (77 is an empirical value) */
+ memset(tft_fb, 0x44, MONITOR_HOR_RES * MONITOR_VER_RES * sizeof(uint32_t));
+ SDL_UpdateTexture(texture, NULL, tft_fb,
+ MONITOR_HOR_RES * sizeof(uint32_t));
+ sdl_refr_qry = true;
+ sdl_inited = true;
+}
+
+void
+display_SDL_init()
+{
+ SDL_CreateThread(monitor_sdl_refr_thread, "sdl_refr", NULL);
+ while (sdl_inited == false)
+ ; /*Wait until 'sdl_refr' initializes the SDL*/
+}
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/system_header.h b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/system_header.h
new file mode 100644
index 000000000..a0d790c8e
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/samples/littlevgl/vgl-native-ui-app/lv-drivers/system_header.h
@@ -0,0 +1,9 @@
+/*
+ * Copyright (C) 2019 Intel Corporation. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ */
+
+#include <stdio.h>
+
+int
+time_get_ms();