improve gradient

This commit is contained in:
lixianjing 2022-04-14 18:29:49 +08:00
parent db5658c0a4
commit 9ac9dd0309
9 changed files with 85 additions and 2 deletions

View File

@ -21,9 +21,9 @@
round_radius_bottom_right ="8">
<normal bg_color="linear-gradient(180deg, #FF0000 20%, #0000FF);" />
<pressed bg_color="linear-gradient(180deg, #FF0000, #0000FF 80%);" x_offset="1" y_offset="1"/>
<over bg_color="linear-gradient(180deg, #FF0000 20%, #0000FF 80%);" />
<over bg_color="linear-gradient(180deg, #FF0000 70%, #0000FF 30%);" />
<disable bg_color="gray" text_color="#d0d0d0" />
<focused bg_color="linear-gradient(180deg, #FF0000 20%, #0000FF);" border_color="green"/>
<focused bg_color="linear-gradient(180deg, #FF0000 20%, #0000FF 80%);" border_color="green"/>
</style>
<style name="icon" icon="earth" border_color="#a0a0a0" text_color="black">

View File

@ -3,6 +3,7 @@
2022/04/14
* 让 windows 的串口也支持 select 的形式(感谢智明提供补丁)。
* 还原 app_helper_base.py 脚本的修改(感谢智明提供补丁)。
* 修复 awtk 在 OpenGL 下的渐变色,上面的颜色坐标比例比下面的颜色要大的时候,颜色不正确的问题(感谢智明提供补丁)。
2022/04/13
* 复切换主题时销毁style后由于控件need_update_style为false没有通知该控件style更新数据导致获取该控件样式属性时发生崩溃问题感谢兆坤提供补丁

7
foobar.fs Normal file
View File

@ -0,0 +1,7 @@
function foo(a, b) {
return a + b
}
function bar(a, b) {
return a - b
}

12
m.js Normal file
View File

@ -0,0 +1,12 @@
var code = '
function foo(a, b) {
return a + b
}
function bar(a, b) {
return a - b
}
'
var m = require_str(code)
print(m.foo(100, 99))
print(m.bar(100, 99))

3
main.fs Normal file
View File

@ -0,0 +1,3 @@
var m = require('foobar.fs')
print(m.foo(100, 99))
print(m.bar(100, 99))

View File

@ -60,6 +60,9 @@ vg_gradient_t* vg_gradient_init_with_gradient(vg_gradient_t* gradient, const rec
info->sy = rect->y + rect->h * g->stops[0].offset;
info->ex = rect->x;
info->ey = rect->y + rect->h * g->stops[1].offset;
if (info->sy > info->ey) {
info->ey = info->sy;
}
}
}
gradient->gradient = *g;

BIN
test.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -105,6 +105,50 @@ TEST(Gradient, str1) {
str_reset(&str);
}
TEST(Gradient, str1_1) {
gradient_t a;
color_t c;
gradient_init_from_str(&a, "linear-gradient(#FF0000 80%, #0000FF 20%)");
ASSERT_EQ(a.type, GRADIENT_LINEAR);
ASSERT_EQ(a.degree, 0u);
ASSERT_EQ(a.nr, 2u);
ASSERT_EQ(a.stops[0].offset, 0.8f);
ASSERT_EQ(a.stops[0].color.rgba.r, 0xff);
ASSERT_EQ(a.stops[1].offset, 0.2f);
ASSERT_EQ(a.stops[1].color.rgba.b, 0xff);
c = gradient_get_color(&a, 0);
ASSERT_EQ(c.rgba.r, 0xff);
ASSERT_EQ(c.rgba.g, 0);
ASSERT_EQ(c.rgba.b, 0);
ASSERT_EQ(c.rgba.a, 0xff);
c = gradient_get_color(&a, 0.5);
ASSERT_EQ(c.rgba.r, 0xff);
ASSERT_EQ(c.rgba.g, 0);
ASSERT_EQ(c.rgba.b, 0);
ASSERT_EQ(c.rgba.a, 0xff);
c = gradient_get_color(&a, 0.9);
ASSERT_EQ(c.rgba.r, 0);
ASSERT_EQ(c.rgba.g, 0);
ASSERT_EQ(c.rgba.b, 0xff);
ASSERT_EQ(c.rgba.a, 0xff);
c = gradient_get_color(&a, 1);
ASSERT_EQ(c.rgba.r, 0);
ASSERT_EQ(c.rgba.g, 0);
ASSERT_EQ(c.rgba.b, 0xff);
ASSERT_EQ(c.rgba.a, 0xff);
str_t str;
str_init(&str, 0);
ASSERT_EQ(gradient_to_str(&a, &str), RET_OK);
ASSERT_STREQ(str.str, "linear-gradient(0deg, #FF0000 80%, #0000FF 20%)");
str_reset(&str);
}
TEST(Gradient, str2) {
gradient_t a;
gradient_init_from_str(&a, "linear-gradient(#FF0000 0%, #00FF00 50%, #0000FF 100%)");

View File

@ -124,3 +124,16 @@ TEST(VGGradient, init_with_gradient3) {
ASSERT_EQ(g->info.linear.ex, 0.0f);
ASSERT_EQ(g->info.linear.ey, 80.0f);
}
TEST(VGGradient, init_with_gradient4) {
vg_gradient_t gg;
gradient_t agradient;
rect_t rect = {0, 0, 100, 100};
gradient_init_from_str(&agradient, "linear-gradient(180deg, #6AB2FF 80%, #0D81FF 20%);");
vg_gradient_t* g = vg_gradient_init_with_gradient(&gg, &rect, &agradient);
ASSERT_EQ(g->gradient.type, GRADIENT_LINEAR);
ASSERT_EQ(g->info.linear.sx, 0.0f);
ASSERT_EQ(g->info.linear.sy, 80.0f);
ASSERT_EQ(g->info.linear.ex, 0.0f);
ASSERT_EQ(g->info.linear.ey, 80.0f);
}