diff --git a/src/draw/vg_lite/lv_vg_lite_utils.c b/src/draw/vg_lite/lv_vg_lite_utils.c index dac68d2e07..f0f8ba5c4f 100644 --- a/src/draw/vg_lite/lv_vg_lite_utils.c +++ b/src/draw/vg_lite/lv_vg_lite_utils.c @@ -403,6 +403,9 @@ bool lv_vg_lite_is_dest_cf_supported(lv_color_format_t cf) case LV_COLOR_FORMAT_RGB565: case LV_COLOR_FORMAT_ARGB8888: case LV_COLOR_FORMAT_XRGB8888: + case LV_COLOR_FORMAT_ARGB1555: + case LV_COLOR_FORMAT_ARGB4444: + case LV_COLOR_FORMAT_ARGB2222: return true; case LV_COLOR_FORMAT_ARGB8565: @@ -425,6 +428,9 @@ bool lv_vg_lite_is_src_cf_supported(lv_color_format_t cf) case LV_COLOR_FORMAT_RGB565: case LV_COLOR_FORMAT_ARGB8888: case LV_COLOR_FORMAT_XRGB8888: + case LV_COLOR_FORMAT_ARGB1555: + case LV_COLOR_FORMAT_ARGB4444: + case LV_COLOR_FORMAT_ARGB2222: return true; case LV_COLOR_FORMAT_I1: @@ -476,6 +482,15 @@ vg_lite_buffer_format_t lv_vg_lite_vg_fmt(lv_color_format_t cf) case LV_COLOR_FORMAT_I8: return VG_LITE_INDEX_8; + case LV_COLOR_FORMAT_ARGB1555: + return VG_LITE_BGRA5551; + + case LV_COLOR_FORMAT_ARGB4444: + return VG_LITE_BGRA4444; + + case LV_COLOR_FORMAT_ARGB2222: + return VG_LITE_BGRA2222; + case LV_COLOR_FORMAT_RGB565: return VG_LITE_BGR565; diff --git a/src/misc/lv_color.c b/src/misc/lv_color.c index 7a609411d5..4c7ef41c90 100644 --- a/src/misc/lv_color.c +++ b/src/misc/lv_color.c @@ -55,12 +55,15 @@ uint8_t lv_color_format_get_bpp(lv_color_format_t cf) case LV_COLOR_FORMAT_L8: case LV_COLOR_FORMAT_A8: case LV_COLOR_FORMAT_I8: + case LV_COLOR_FORMAT_ARGB2222: return 8; case LV_COLOR_FORMAT_RGB565A8: case LV_COLOR_FORMAT_RGB565: case LV_COLOR_FORMAT_YUY2: case LV_COLOR_FORMAT_AL88: + case LV_COLOR_FORMAT_ARGB1555: + case LV_COLOR_FORMAT_ARGB4444: return 16; case LV_COLOR_FORMAT_ARGB8565: @@ -91,6 +94,9 @@ bool lv_color_format_has_alpha(lv_color_format_t cf) case LV_COLOR_FORMAT_ARGB8565: case LV_COLOR_FORMAT_ARGB8888: case LV_COLOR_FORMAT_AL88: + case LV_COLOR_FORMAT_ARGB2222: + case LV_COLOR_FORMAT_ARGB1555: + case LV_COLOR_FORMAT_ARGB4444: return true; default: return false; diff --git a/src/misc/lv_color.h b/src/misc/lv_color.h index 3a939b90f4..55eda5318b 100644 --- a/src/misc/lv_color.h +++ b/src/misc/lv_color.h @@ -72,10 +72,13 @@ enum { (cf) == LV_COLOR_FORMAT_L8 ? 8 : \ (cf) == LV_COLOR_FORMAT_A8 ? 8 : \ (cf) == LV_COLOR_FORMAT_I8 ? 8 : \ + (cf) == LV_COLOR_FORMAT_ARGB2222 ? 8 : \ (cf) == LV_COLOR_FORMAT_AL88 ? 16 : \ (cf) == LV_COLOR_FORMAT_RGB565 ? 16 : \ (cf) == LV_COLOR_FORMAT_RGB565A8 ? 16 : \ (cf) == LV_COLOR_FORMAT_YUY2 ? 16 : \ + (cf) == LV_COLOR_FORMAT_ARGB1555 ? 16 : \ + (cf) == LV_COLOR_FORMAT_ARGB4444 ? 16 : \ (cf) == LV_COLOR_FORMAT_ARGB8565 ? 24 : \ (cf) == LV_COLOR_FORMAT_RGB888 ? 24 : \ (cf) == LV_COLOR_FORMAT_ARGB8888 ? 32 : \ @@ -154,6 +157,9 @@ typedef enum { LV_COLOR_FORMAT_A1 = 0x0B, LV_COLOR_FORMAT_A2 = 0x0C, LV_COLOR_FORMAT_A4 = 0x0D, + LV_COLOR_FORMAT_ARGB1555 = 0x16, + LV_COLOR_FORMAT_ARGB4444 = 0x17, + LV_COLOR_FORMAT_ARGB2222 = 0X18, /* reference to https://wiki.videolan.org/YUV/ */ /*YUV planar formats*/ diff --git a/src/others/snapshot/lv_snapshot.c b/src/others/snapshot/lv_snapshot.c index 3be5c49814..8e4fafe795 100644 --- a/src/others/snapshot/lv_snapshot.c +++ b/src/others/snapshot/lv_snapshot.c @@ -86,6 +86,9 @@ lv_result_t lv_snapshot_take_to_draw_buf(lv_obj_t * obj, lv_color_format_t cf, l case LV_COLOR_FORMAT_A8: case LV_COLOR_FORMAT_L8: case LV_COLOR_FORMAT_I1: + case LV_COLOR_FORMAT_ARGB2222: + case LV_COLOR_FORMAT_ARGB4444: + case LV_COLOR_FORMAT_ARGB1555: break; default: LV_LOG_WARN("Not supported color format"); diff --git a/src/others/vg_lite_tvg/vg_lite_tvg.cpp b/src/others/vg_lite_tvg/vg_lite_tvg.cpp index 47d1930c8d..823eff7af7 100644 --- a/src/others/vg_lite_tvg/vg_lite_tvg.cpp +++ b/src/others/vg_lite_tvg/vg_lite_tvg.cpp @@ -119,6 +119,27 @@ typedef struct { uint8_t alpha; } vg_color32_t; +typedef struct { + uint8_t blue : 4; + uint8_t green : 4; + uint8_t red : 4; + uint8_t alpha : 4; +} vg_color_bgra4444_t; + +typedef struct { + uint8_t blue : 2; + uint8_t green : 2; + uint8_t red : 2; + uint8_t alpha : 2; +} vg_color_bgra2222_t; + +typedef struct { + uint8_t blue : 5; + uint8_t green : 5; + uint8_t red : 5; + uint8_t alpha : 1; +} vg_color_bgra5551_t; + typedef struct { vg_lite_float_t x; vg_lite_float_t y; @@ -441,6 +462,45 @@ static vg_lite_converter conv_l8_to_bgra8888( } }); +static vg_lite_converter conv_bgra5551_to_bgra8888( + [](vg_color32_t * dest, const vg_color_bgra5551_t * src, vg_lite_uint32_t px_size, vg_lite_uint32_t /* color */) +{ + while(px_size--) { + dest->red = src->red * 0xFF / 0x1F; + dest->green = src->green * 0xFF / 0x1F; + dest->blue = src->blue * 0xFF / 0x1F; + dest->alpha = src->alpha ? 0xFF : 0; + src++; + dest++; + } +}); + +static vg_lite_converter conv_bgra4444_to_bgra8888( + [](vg_color32_t * dest, const vg_color_bgra4444_t * src, vg_lite_uint32_t px_size, vg_lite_uint32_t /* color */) +{ + while(px_size--) { + dest->red = src->red * 0xFF / 0xF; + dest->green = src->green * 0xFF / 0xF; + dest->blue = src->blue * 0xFF / 0xF; + dest->alpha = src->alpha * 0xFF / 0xF; + src++; + dest++; + } +}); + +static vg_lite_converter conv_bgra2222_to_bgra8888( + [](vg_color32_t * dest, const vg_color_bgra2222_t * src, vg_lite_uint32_t px_size, vg_lite_uint32_t /* color */) +{ + while(px_size--) { + dest->red = src->red * 0xFF / 0x3; + dest->green = src->green * 0xFF / 0x3; + dest->blue = src->blue * 0xFF / 0x3; + dest->alpha = src->alpha * 0xFF / 0x3; + src++; + dest++; + } +}); + /********************** * MACROS **********************/ @@ -686,6 +746,43 @@ extern "C" { } } + static void picture_bgra8888_to_bgra5551(vg_color_bgra5551_t * dest, const vg_color32_t * src, vg_lite_uint32_t px_size) + { + while(px_size--) { + dest->red = src->red * 0x1F / 0xFF; + dest->green = src->green * 0x1F / 0xFF; + dest->blue = src->blue * 0x1F / 0xFF; + dest->alpha = src->alpha > (0xFF / 2) ? 1 : 0; + src++; + dest++; + } + } + + static void picture_bgra8888_to_bgra4444(vg_color_bgra4444_t * dest, const vg_color32_t * src, vg_lite_uint32_t px_size) + { + while(px_size--) { + dest->red = src->red * 0xF / 0xFF; + dest->green = src->green * 0xF / 0xFF; + dest->blue = src->blue * 0xF / 0xFF; + dest->alpha = src->alpha * 0xF / 0xFF; + src++; + dest++; + } + } + + static void picture_bgra8888_to_bgra2222(vg_color_bgra2222_t * dest, const vg_color32_t * src, vg_lite_uint32_t px_size) + { + while(px_size--) { + dest->red = src->red * 0x3 / 0xFF; + dest->green = src->green * 0x3 / 0xFF; + dest->blue = src->blue * 0x3 / 0xFF; + dest->alpha = src->alpha * 0x3 / 0xFF; + src++; + dest++; + } + } + + vg_lite_error_t vg_lite_finish(void) { vg_lite_ctx * ctx = vg_lite_ctx::get_instance(); @@ -732,6 +829,21 @@ extern "C" { (const vg_color32_t *)ctx->get_temp_target_buffer(), ctx->target_px_size); break; + case VG_LITE_BGRA5551: + picture_bgra8888_to_bgra5551((vg_color_bgra5551_t *)ctx->target_buffer, + (const vg_color32_t *)ctx->get_temp_target_buffer(), + ctx->target_px_size); + break; + case VG_LITE_BGRA4444: + picture_bgra8888_to_bgra4444((vg_color_bgra4444_t *)ctx->target_buffer, + (const vg_color32_t *)ctx->get_temp_target_buffer(), + ctx->target_px_size); + break; + case VG_LITE_BGRA2222: + picture_bgra8888_to_bgra2222((vg_color_bgra2222_t *)ctx->target_buffer, + (const vg_color32_t *)ctx->get_temp_target_buffer(), + ctx->target_px_size); + break; case VG_LITE_BGRA8888: case VG_LITE_BGRX8888: /* No conversion required. */ @@ -2547,6 +2659,21 @@ static Result picture_load(vg_lite_ctx * ctx, std::unique_ptr & picture } break; + case VG_LITE_BGRA5551: { + conv_bgra5551_to_bgra8888.convert(&target, source); + } + break; + + case VG_LITE_BGRA4444: { + conv_bgra4444_to_bgra8888.convert(&target, source); + } + break; + + case VG_LITE_BGRA2222: { + conv_bgra2222_to_bgra8888.convert(&target, source); + } + break; + #if LV_VG_LITE_THORVG_YUV_SUPPORT case VG_LITE_NV12: { libyuv::NV12ToARGB((const uint8_t *)source->memory, source->stride, (const uint8_t *)source->yuv.uv_memory, diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_image_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_image_opa_128.png new file mode 100644 index 0000000000..e0d1353db6 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_image_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_image_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_image_opa_255.png new file mode 100644 index 0000000000..ad77732edc Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_image_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_normal_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_normal_opa_128.png new file mode 100644 index 0000000000..7862ba6285 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_normal_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_normal_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_normal_opa_255.png new file mode 100644 index 0000000000..537cc60f6c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_arc_normal_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_blend_mode_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_blend_mode_opa_128.png new file mode 100644 index 0000000000..655b91a42e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_blend_mode_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_blend_mode_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_blend_mode_opa_255.png new file mode 100644 index 0000000000..33321e8109 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_blend_mode_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_border_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_border_opa_128.png new file mode 100644 index 0000000000..35c80e9b73 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_border_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_border_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_border_opa_255.png new file mode 100644 index 0000000000..480daccd8e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_border_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_box_shadow_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_box_shadow_opa_128.png new file mode 100644 index 0000000000..4518e2a5d7 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_box_shadow_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_box_shadow_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_box_shadow_opa_255.png new file mode 100644 index 0000000000..10559c0c5c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_box_shadow_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_conical_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_conical_gradient_opa_128.png new file mode 100644 index 0000000000..52198e30fe Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_conical_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_conical_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_conical_gradient_opa_255.png new file mode 100644 index 0000000000..52198e30fe Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_conical_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_fill_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_fill_opa_128.png new file mode 100644 index 0000000000..d34408b09d Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_fill_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_fill_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_fill_opa_255.png new file mode 100644 index 0000000000..026850028b Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_fill_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_1_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_1_opa_128.png new file mode 100644 index 0000000000..a0c17851f1 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_1_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_1_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_1_opa_255.png new file mode 100644 index 0000000000..f93fe31313 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_1_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_2_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_2_opa_128.png new file mode 100644 index 0000000000..cdecfb4801 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_2_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_2_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_2_opa_255.png new file mode 100644 index 0000000000..ec905a25b0 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_normal_2_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_1_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_1_opa_128.png new file mode 100644 index 0000000000..a60bc4dcb7 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_1_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_1_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_1_opa_255.png new file mode 100644 index 0000000000..e7fb6815b1 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_1_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_2_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_2_opa_128.png new file mode 100644 index 0000000000..514733fe2a Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_2_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_2_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_2_opa_255.png new file mode 100644 index 0000000000..42b3625f0c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_image_recolor_2_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_layer_normal_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_layer_normal_opa_128.png new file mode 100644 index 0000000000..ae0267e604 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_layer_normal_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_layer_normal_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_layer_normal_opa_255.png new file mode 100644 index 0000000000..19f4cc0b30 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_layer_normal_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_line_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_line_opa_128.png new file mode 100644 index 0000000000..5e1b8cf9f0 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_line_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_line_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_line_opa_255.png new file mode 100644 index 0000000000..c5e0cbc567 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_line_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_linear_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_linear_gradient_opa_128.png new file mode 100644 index 0000000000..86a4ef71a2 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_linear_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_linear_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_linear_gradient_opa_255.png new file mode 100644 index 0000000000..86a4ef71a2 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_linear_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_radial_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_radial_gradient_opa_128.png new file mode 100644 index 0000000000..d241f139de Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_radial_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_radial_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_radial_gradient_opa_255.png new file mode 100644 index 0000000000..d241f139de Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_radial_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_text_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_text_opa_128.png new file mode 100644 index 0000000000..1bd4279668 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_text_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_text_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_text_opa_255.png new file mode 100644 index 0000000000..f572016c02 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_text_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_triangle_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_triangle_opa_128.png new file mode 100644 index 0000000000..b3522fe088 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_triangle_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_triangle_opa_255.png new file mode 100644 index 0000000000..f4b7a6bf6e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb1555/demo_render_triangle_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_image_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_image_opa_128.png new file mode 100644 index 0000000000..752979e87a Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_image_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_image_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_image_opa_255.png new file mode 100644 index 0000000000..fe67a36c57 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_image_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_normal_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_normal_opa_128.png new file mode 100644 index 0000000000..6db9ff7c10 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_normal_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_normal_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_normal_opa_255.png new file mode 100644 index 0000000000..c7c69f79ca Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_arc_normal_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_blend_mode_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_blend_mode_opa_128.png new file mode 100644 index 0000000000..e8e3eb0f51 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_blend_mode_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_blend_mode_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_blend_mode_opa_255.png new file mode 100644 index 0000000000..8718a15b39 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_blend_mode_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_border_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_border_opa_128.png new file mode 100644 index 0000000000..6afcdfbd6f Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_border_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_border_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_border_opa_255.png new file mode 100644 index 0000000000..2a30f63916 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_border_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_box_shadow_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_box_shadow_opa_128.png new file mode 100644 index 0000000000..62a60272df Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_box_shadow_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_box_shadow_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_box_shadow_opa_255.png new file mode 100644 index 0000000000..860f5a677c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_box_shadow_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_conical_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_conical_gradient_opa_128.png new file mode 100644 index 0000000000..1fc3b953ae Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_conical_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_conical_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_conical_gradient_opa_255.png new file mode 100644 index 0000000000..1fc3b953ae Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_conical_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_fill_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_fill_opa_128.png new file mode 100644 index 0000000000..e55a4a2cb1 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_fill_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_fill_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_fill_opa_255.png new file mode 100644 index 0000000000..136019878e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_fill_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_1_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_1_opa_128.png new file mode 100644 index 0000000000..31ce6e3e6f Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_1_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_1_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_1_opa_255.png new file mode 100644 index 0000000000..de35ef799c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_1_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_2_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_2_opa_128.png new file mode 100644 index 0000000000..2eac8a9713 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_2_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_2_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_2_opa_255.png new file mode 100644 index 0000000000..b253dce52f Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_normal_2_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_1_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_1_opa_128.png new file mode 100644 index 0000000000..6ffa58727d Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_1_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_1_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_1_opa_255.png new file mode 100644 index 0000000000..960c75638e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_1_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_2_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_2_opa_128.png new file mode 100644 index 0000000000..db94f0855c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_2_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_2_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_2_opa_255.png new file mode 100644 index 0000000000..f16802eac0 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_image_recolor_2_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_layer_normal_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_layer_normal_opa_128.png new file mode 100644 index 0000000000..74a14d863d Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_layer_normal_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_layer_normal_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_layer_normal_opa_255.png new file mode 100644 index 0000000000..f6400c9154 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_layer_normal_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_line_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_line_opa_128.png new file mode 100644 index 0000000000..abd4dc3c4c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_line_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_line_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_line_opa_255.png new file mode 100644 index 0000000000..dcc392f30e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_line_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_linear_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_linear_gradient_opa_128.png new file mode 100644 index 0000000000..69f15e468e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_linear_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_linear_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_linear_gradient_opa_255.png new file mode 100644 index 0000000000..69f15e468e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_linear_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_radial_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_radial_gradient_opa_128.png new file mode 100644 index 0000000000..a713b76235 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_radial_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_radial_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_radial_gradient_opa_255.png new file mode 100644 index 0000000000..a713b76235 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_radial_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_text_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_text_opa_128.png new file mode 100644 index 0000000000..1546ec9cd4 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_text_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_text_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_text_opa_255.png new file mode 100644 index 0000000000..2714e2bf8b Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_text_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_triangle_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_triangle_opa_128.png new file mode 100644 index 0000000000..e59a9ec12f Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_triangle_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_triangle_opa_255.png new file mode 100644 index 0000000000..21e6b06dad Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb2222/demo_render_triangle_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_image_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_image_opa_128.png new file mode 100644 index 0000000000..1994976ac1 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_image_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_image_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_image_opa_255.png new file mode 100644 index 0000000000..d8a96f51a3 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_image_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_normal_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_normal_opa_128.png new file mode 100644 index 0000000000..b9cfa8d11b Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_normal_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_normal_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_normal_opa_255.png new file mode 100644 index 0000000000..9c990599e3 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_arc_normal_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_blend_mode_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_blend_mode_opa_128.png new file mode 100644 index 0000000000..8853637101 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_blend_mode_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_blend_mode_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_blend_mode_opa_255.png new file mode 100644 index 0000000000..5d274c1cab Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_blend_mode_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_border_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_border_opa_128.png new file mode 100644 index 0000000000..fcaf68f111 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_border_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_border_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_border_opa_255.png new file mode 100644 index 0000000000..a965dc2116 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_border_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_box_shadow_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_box_shadow_opa_128.png new file mode 100644 index 0000000000..82cf15cde4 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_box_shadow_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_box_shadow_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_box_shadow_opa_255.png new file mode 100644 index 0000000000..248e2f16f6 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_box_shadow_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_conical_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_conical_gradient_opa_128.png new file mode 100644 index 0000000000..ffb031b4ef Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_conical_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_conical_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_conical_gradient_opa_255.png new file mode 100644 index 0000000000..ffb031b4ef Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_conical_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_fill_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_fill_opa_128.png new file mode 100644 index 0000000000..3526309e2a Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_fill_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_fill_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_fill_opa_255.png new file mode 100644 index 0000000000..6b70d8c4a6 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_fill_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_1_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_1_opa_128.png new file mode 100644 index 0000000000..51ba5264bf Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_1_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_1_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_1_opa_255.png new file mode 100644 index 0000000000..257efa224e Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_1_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_2_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_2_opa_128.png new file mode 100644 index 0000000000..37cfa2c369 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_2_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_2_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_2_opa_255.png new file mode 100644 index 0000000000..1e4a1be75c Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_normal_2_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_1_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_1_opa_128.png new file mode 100644 index 0000000000..d2c9073e62 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_1_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_1_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_1_opa_255.png new file mode 100644 index 0000000000..eb3500d430 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_1_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_2_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_2_opa_128.png new file mode 100644 index 0000000000..64054fb387 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_2_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_2_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_2_opa_255.png new file mode 100644 index 0000000000..da25858400 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_image_recolor_2_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_layer_normal_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_layer_normal_opa_128.png new file mode 100644 index 0000000000..cc17975cb4 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_layer_normal_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_layer_normal_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_layer_normal_opa_255.png new file mode 100644 index 0000000000..e793ec2423 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_layer_normal_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_line_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_line_opa_128.png new file mode 100644 index 0000000000..d7a1d57dd4 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_line_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_line_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_line_opa_255.png new file mode 100644 index 0000000000..941bffd935 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_line_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_linear_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_linear_gradient_opa_128.png new file mode 100644 index 0000000000..b529bc78d2 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_linear_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_linear_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_linear_gradient_opa_255.png new file mode 100644 index 0000000000..b529bc78d2 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_linear_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_radial_gradient_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_radial_gradient_opa_128.png new file mode 100644 index 0000000000..8ef1c81941 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_radial_gradient_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_radial_gradient_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_radial_gradient_opa_255.png new file mode 100644 index 0000000000..8ef1c81941 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_radial_gradient_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_text_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_text_opa_128.png new file mode 100644 index 0000000000..824b8e6ef0 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_text_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_text_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_text_opa_255.png new file mode 100644 index 0000000000..77bedc2833 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_text_opa_255.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_triangle_opa_128.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_triangle_opa_128.png new file mode 100644 index 0000000000..006af2f168 Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_triangle_opa_128.png differ diff --git a/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_triangle_opa_255.png b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_triangle_opa_255.png new file mode 100644 index 0000000000..fc7b8be31b Binary files /dev/null and b/tests/ref_imgs_vg_lite/draw/render/argb4444/demo_render_triangle_opa_255.png differ diff --git a/tests/src/test_cases/draw/test_render_to_argb1555.c b/tests/src/test_cases/draw/test_render_to_argb1555.c new file mode 100644 index 0000000000..fb2078aeed --- /dev/null +++ b/tests/src/test_cases/draw/test_render_to_argb1555.c @@ -0,0 +1,56 @@ +#if LV_BUILD_TEST +#include "../lvgl.h" +#include "../../lvgl_private.h" +#include "../demos/lv_demos.h" + +#include "unity/unity.h" + +void setUp(void) +{ + /* Function run before every test */ +} + +void tearDown(void) +{ + /* Function run after every test */ +} + +void test_render_to_argb1555(void) +{ + /** + * There is a slight color deviation between thorvg on 32-bit and 64-bit platforms. + * The deviation will be amplified when using lower precision color formats. + * Only 64-bit platforms are tested here. + */ +#if LV_USE_DRAW_VG_LITE && LV_USE_SNAPSHOT && !defined(NON_AMD64_BUILD) + + lv_opa_t opa_values[2] = {0xff, 0x80}; + uint32_t opa; + for(opa = 0; opa < 2; opa++) { + uint32_t i; + for(i = 0; i < LV_DEMO_RENDER_SCENE_NUM; i++) { + + /*Skip test with transformed indexed images if they are not loaded to RAM*/ + if(LV_BIN_DECODER_RAM_LOAD == 0 && + (i == LV_DEMO_RENDER_SCENE_IMAGE_NORMAL_2 || + i == LV_DEMO_RENDER_SCENE_IMAGE_RECOLOR_2)) continue; + + lv_demo_render(i, opa_values[opa]); + lv_draw_buf_t * draw_buf = lv_snapshot_take(lv_screen_active(), LV_COLOR_FORMAT_ARGB1555); + lv_obj_t * img = lv_image_create(lv_layer_top()); + lv_image_set_src(img, draw_buf); + + char buf[128]; + lv_snprintf(buf, sizeof(buf), "draw/render/argb1555/demo_render_%s_opa_%d.png", + lv_demo_render_get_scene_name(i), opa_values[opa]); + TEST_ASSERT_EQUAL_SCREENSHOT(buf); + lv_obj_delete(img); + lv_draw_buf_destroy(draw_buf); + } + } +#else + TEST_PASS(); +#endif +} + +#endif diff --git a/tests/src/test_cases/draw/test_render_to_argb2222.c b/tests/src/test_cases/draw/test_render_to_argb2222.c new file mode 100644 index 0000000000..b62e63d650 --- /dev/null +++ b/tests/src/test_cases/draw/test_render_to_argb2222.c @@ -0,0 +1,56 @@ +#if LV_BUILD_TEST +#include "../lvgl.h" +#include "../../lvgl_private.h" +#include "../demos/lv_demos.h" + +#include "unity/unity.h" + +void setUp(void) +{ + /* Function run before every test */ +} + +void tearDown(void) +{ + /* Function run after every test */ +} + +void test_render_to_argb2222(void) +{ + /** + * There is a slight color deviation between thorvg on 32-bit and 64-bit platforms. + * The deviation will be amplified when using lower precision color formats. + * Only 64-bit platforms are tested here. + */ +#if LV_USE_DRAW_VG_LITE && LV_USE_SNAPSHOT && !defined(NON_AMD64_BUILD) + + lv_opa_t opa_values[2] = {0xff, 0x80}; + uint32_t opa; + for(opa = 0; opa < 2; opa++) { + uint32_t i; + for(i = 0; i < LV_DEMO_RENDER_SCENE_NUM; i++) { + + /*Skip test with transformed indexed images if they are not loaded to RAM*/ + if(LV_BIN_DECODER_RAM_LOAD == 0 && + (i == LV_DEMO_RENDER_SCENE_IMAGE_NORMAL_2 || + i == LV_DEMO_RENDER_SCENE_IMAGE_RECOLOR_2)) continue; + + lv_demo_render(i, opa_values[opa]); + lv_draw_buf_t * draw_buf = lv_snapshot_take(lv_screen_active(), LV_COLOR_FORMAT_ARGB2222); + lv_obj_t * img = lv_image_create(lv_layer_top()); + lv_image_set_src(img, draw_buf); + + char buf[128]; + lv_snprintf(buf, sizeof(buf), "draw/render/argb2222/demo_render_%s_opa_%d.png", + lv_demo_render_get_scene_name(i), opa_values[opa]); + TEST_ASSERT_EQUAL_SCREENSHOT(buf); + lv_obj_delete(img); + lv_draw_buf_destroy(draw_buf); + } + } +#else + TEST_PASS(); +#endif +} + +#endif diff --git a/tests/src/test_cases/draw/test_render_to_argb4444.c b/tests/src/test_cases/draw/test_render_to_argb4444.c new file mode 100644 index 0000000000..a7535ae925 --- /dev/null +++ b/tests/src/test_cases/draw/test_render_to_argb4444.c @@ -0,0 +1,56 @@ +#if LV_BUILD_TEST +#include "../lvgl.h" +#include "../../lvgl_private.h" +#include "../demos/lv_demos.h" + +#include "unity/unity.h" + +void setUp(void) +{ + /* Function run before every test */ +} + +void tearDown(void) +{ + /* Function run after every test */ +} + +void test_render_to_argb4444(void) +{ + /** + * There is a slight color deviation between thorvg on 32-bit and 64-bit platforms. + * The deviation will be amplified when using lower precision color formats. + * Only 64-bit platforms are tested here. + */ +#if LV_USE_DRAW_VG_LITE && LV_USE_SNAPSHOT && !defined(NON_AMD64_BUILD) + + lv_opa_t opa_values[2] = {0xff, 0x80}; + uint32_t opa; + for(opa = 0; opa < 2; opa++) { + uint32_t i; + for(i = 0; i < LV_DEMO_RENDER_SCENE_NUM; i++) { + + /*Skip test with transformed indexed images if they are not loaded to RAM*/ + if(LV_BIN_DECODER_RAM_LOAD == 0 && + (i == LV_DEMO_RENDER_SCENE_IMAGE_NORMAL_2 || + i == LV_DEMO_RENDER_SCENE_IMAGE_RECOLOR_2)) continue; + + lv_demo_render(i, opa_values[opa]); + lv_draw_buf_t * draw_buf = lv_snapshot_take(lv_screen_active(), LV_COLOR_FORMAT_ARGB4444); + lv_obj_t * img = lv_image_create(lv_layer_top()); + lv_image_set_src(img, draw_buf); + + char buf[128]; + lv_snprintf(buf, sizeof(buf), "draw/render/argb4444/demo_render_%s_opa_%d.png", + lv_demo_render_get_scene_name(i), opa_values[opa]); + TEST_ASSERT_EQUAL_SCREENSHOT(buf); + lv_obj_delete(img); + lv_draw_buf_destroy(draw_buf); + } + } +#else + TEST_PASS(); +#endif +} + +#endif