improve image value

This commit is contained in:
lixianjing 2021-10-11 15:47:58 +08:00
parent d3ecfeae78
commit 09e3a960f0
2 changed files with 52 additions and 51 deletions

View File

@ -1,78 +1,79 @@
# 最新动态
2021/10/11
* 完善app\_help\_base修复mvvm-js项目编译时找不到jerryscript路径的问题感谢雨欣提供补丁
* 启用fscript\_ext时需定义宏WITH\_DATA\_READER\_WRITER (感谢雨欣提供补丁)
* 完善mledit感谢兆坤提供补丁
* mledit启动覆盖行时选中文本不对的问题。
* 追加功能在mledit启动覆盖行时滚动条值不为最大时mledit偏移位置则不随光标位置改变。
* 完善 app\_help\_base修复 mvvm-js 项目编译时找不到 jerryscript 路径的问题(感谢雨欣提供补丁)
* 启用 fscript\_ext 时需定义宏 WITH\_DATA\_READER\_WRITER (感谢雨欣提供补丁)
* 完善 mledit感谢兆坤提供补丁
* mledit 启动覆盖行时,选中文本不对的问题。
* 追加功能:在 mledit 启动覆盖行时滚动条值不为最大时mledit 偏移位置则不随光标位置改变。
* 修复当内存不足的时候导致 image\_value 的 bitmap 被释放导致断言的问题(感谢智明提供补丁)
2021/10/09
* 修复拖拽控件在拖拽时且控件不移动时没有发送drag事件感谢兆坤提供补丁
* 修复拖拽控件在拖拽时且控件不移动时,没有发送 drag 事件(感谢兆坤提供补丁)
2021/09/30
* 修复demoui内存泄露和分辨率适配的问题感谢兆坤提供补丁
* 修复 demoui 内存泄露和分辨率适配的问题(感谢兆坤提供补丁)
2021/09/29
* 修改OpenGL宏感谢智明提供补丁
* AWTK-WEB支持多主题感谢兆坤提供补丁
* 修改 OpenGL 宏(感谢智明提供补丁)
* AWTK-WEB 支持多主题(感谢兆坤提供补丁)
* 修复圆角矩形渐变偏移不正常的问题(感谢智明提供补丁)
2021/09/28
* 修复控件使用圆角矩形后半透明的问题(感谢智明提供补丁)
2021/09/25
* 增加object\_create\_ex
* 增加 object\_create\_ex
2021/09/24
* 完善文档[渐变色](gradient.md)(感谢雨欣提供补丁)
* 完善文档 [渐变色](gradient.md)(感谢雨欣提供补丁)
2021/09/22
* 完善object\_get\_child\_object感谢雨欣提供补丁
* 完善android版本demo感谢兆坤提供补丁
* 完善ios版本。
* 增加object\_widget把widget包装成object方便在fscript中访问widget的属性感谢雨欣提供补丁
* 完善 object\_get\_child\_object感谢雨欣提供补丁
* 完善 android 版本 demo感谢兆坤提供补丁
* 完善 ios 版本。
* 增加 object\_widget widget 包装成 object方便在 fscript 中访问 widget 的属性(感谢雨欣提供补丁)
2021/09/19
* 修复cppcheck的一些警告。
* 修复 cppcheck 的一些警告。
2021/09/18
* 完善 func\_eq感谢雨欣提供补丁
* 取消升级gtest。
* 修复asset\_loader\_zip在Windows上的问题。
* 取消升级 gtest。
* 修复 asset\_loader\_zip Windows 上的问题。
2021/09/16
* 解除assets-1m.c和demo\_ui\_app.c之间的耦合感谢兆坤提供补丁
* 解除 assets-1m.c demo\_ui\_app.c 之间的耦合(感谢兆坤提供补丁)
* object\_array\_set\_prop 函数,在 name 属性不符合要求时,返回设置失败(感谢雨欣提供补丁)
* 还原 pc 的编译优化等级(感谢智明提供补丁)
* 修改 gradient.c 文件为 inc感谢智明提供补丁
* 修复 overlay 窗口打开后导致之前的窗口切换到后台而被挂起的问题(感谢智明提供补丁)
2021/09/15
* 升级gtest。
* strgen工具生成国际化字符串时保留文本两端的空格。
* 修改自动生成资源文件脚本分为assets、assets\_old 和 assets\_allassets包含新demoui的资源assets\_old包含旧demoui的资源assets\_all包含所有资源感谢兆坤提供补丁
* 将demo\_ui\_ex\_app.c改名为demo\_ui\_app.c而之前的demo\_ui\_app.c改名为demo\_ui\_old\_app.c感谢兆坤提供补丁
* 新demoui增加渐变色按钮示例感谢兆坤提供补丁
* 补充新demoui键盘中文翻译修改kb\_foo样式感谢兆坤提供补丁
* 修复gtest编译警告感谢智明提供补丁
* 升级 gtest。
* strgen 工具生成国际化字符串时保留文本两端的空格。
* 修改自动生成资源文件脚本,分为 assets、assets\_old 和 assets\_allassets 包含新 demoui 的资源assets\_old 包含旧 demoui 的资源assets\_all 包含所有资源(感谢兆坤提供补丁)。
* 将 demo\_ui\_ex\_app.c 改名为 demo\_ui\_app.c而之前的 demo\_ui\_app.c 改名为 demo\_ui\_old\_app.c感谢兆坤提供补丁
* 新 demoui 增加渐变色按钮示例(感谢兆坤提供补丁)。
* 补充新 demoui 键盘中文翻译,修改 kb\_foo 样式(感谢兆坤提供补丁)。
* 修复 gtest 编译警告(感谢智明提供补丁)
* 修复编译警告(感谢智明和兆坤提供补丁)
* 修复编译demoui警告感谢兆坤提供补丁
* 完善draw\_rounded\_rect感谢智明提供补丁
* 修复编译 demoui 警告(感谢兆坤提供补丁)
* 完善 draw\_rounded\_rect感谢智明提供补丁
2021/09/14
* 根据新增接口,完善 object\_array 以及 object\_default感谢雨欣提供补丁
* 完善 progress\_circle 控件,兼容旧版的 unit 属性用法i感谢雨欣提供补丁
* 完善 progress\_circle 控件,兼容旧版的 unit 属性用法 i感谢雨欣提供补丁
* 完善 progress\_bar 控件format 属性与 designer 显示效果保持一致(感谢雨欣提供补丁)
* 新增 object\_get\_child\_object 接口,方便 AWTK 内部的 object\_t 派生类和 mvvm 直接调用(感谢雨欣提供补丁)
* 修复object default中的内存泄漏。
* 完善widget\_set\_as\_key\_target修复style没有更新的问题。
* 去掉tk\_utf8\_from\_utf16\_ex中不必要的警告。
* 支持style支持[渐变色](gradient.md)(感谢智明提供补丁)
* 修复 object default 中的内存泄漏。
* 完善 widget\_set\_as\_key\_target修复 style 没有更新的问题。
* 去掉 tk\_utf8\_from\_utf16\_ex 中不必要的警告。
* 支持 style 支持 [渐变色](gradient.md)(感谢智明提供补丁)
2021/09/13
* 修改canvas\_draw\_image改成用rectf类型感谢智明提供补丁
* 增加宏WITH\_GPU/WITH\_GPU\_GLES2感谢智明提供补丁
* 修改 canvas\_draw\_image 改成用 rectf 类型(感谢智明提供补丁)
* 增加宏 WITH\_GPU/WITH\_GPU\_GLES2感谢智明提供补丁
2021/09/11
* 增加 object\_default\_create\_ex 用于禁止路径访问属性。

View File

@ -23,7 +23,7 @@
#include "tkc/utils.h"
#include "image_value/image_value.h"
static ret_t image_value_draw_images(widget_t* widget, canvas_t* c, bitmap_t* bitmap, uint32_t nr) {
static ret_t image_value_draw_images(widget_t* widget, canvas_t* c, char bitmap_name[IMAGE_VALUE_MAX_CHAR_NR][TK_NAME_LEN + 1], uint32_t nr) {
int32_t x = 0;
int32_t y = 0;
int32_t i = 0;
@ -40,10 +40,11 @@ static ret_t image_value_draw_images(widget_t* widget, canvas_t* c, bitmap_t* bi
(image_draw_type_t)style_get_int(style, STYLE_ID_FG_IMAGE_DRAW_TYPE, IMAGE_DRAW_DEFAULT);
for (i = 0; i < nr; i++) {
bitmap_t* b = bitmap + i;
w += b->w;
if (h < b->h) {
h = b->h;
bitmap_t b;
return_value_if_fail(widget_load_image(widget, bitmap_name[i], &b) == RET_OK, RET_BAD_PARAMS);
w += b.w;
if (h < b.h) {
h = b.h;
}
}
@ -111,11 +112,12 @@ static ret_t image_value_draw_images(widget_t* widget, canvas_t* c, bitmap_t* bi
}
for (i = 0; i < nr; i++) {
bitmap_t* b = bitmap + i;
rect_t s = rect_init(0, 0, b->w, b->h);
rect_t d = rect_init(x, y, scale_w * b->w / ratio, scale_h * b->h / ratio);
bitmap_t b;
return_value_if_fail(widget_load_image(widget, bitmap_name[i], &b) == RET_OK, RET_BAD_PARAMS);
rect_t s = rect_init(0, 0, b.w, b.h);
rect_t d = rect_init(x, y, scale_w * b.w / ratio, scale_h * b.h / ratio);
canvas_draw_image(c, b, &s, &d);
canvas_draw_image(c, &b, &s, &d);
x += d.w;
}
@ -130,15 +132,15 @@ static ret_t image_value_on_paint_self(widget_t* widget, canvas_t* c) {
const char* format = NULL;
char name[TK_NAME_LEN + 1];
char str[IMAGE_VALUE_MAX_CHAR_NR + 1];
bitmap_t bitmap[IMAGE_VALUE_MAX_CHAR_NR];
char bitmap_name[IMAGE_VALUE_MAX_CHAR_NR][TK_NAME_LEN + 1];
image_value_t* image_value = IMAGE_VALUE(widget);
return_value_if_fail(image_value != NULL && widget != NULL, RET_BAD_PARAMS);
format = image_value->format != NULL ? image_value->format : "%d";
return_value_if_fail(image_value->image != NULL, RET_BAD_PARAMS);
memset(bitmap, 0x00, sizeof(bitmap));
memset(sub_name, 0x00, sizeof(sub_name));
memset(sub_name, 0x0, sizeof(sub_name));
memset(bitmap_name, 0x0, sizeof(bitmap_name));
if (strchr(format, 'd') != NULL || strchr(format, 'x') != NULL || strchr(format, 'X') != NULL) {
tk_snprintf(str, IMAGE_VALUE_MAX_CHAR_NR, format, tk_roundi(image_value->value));
} else {
@ -148,7 +150,6 @@ static ret_t image_value_on_paint_self(widget_t* widget, canvas_t* c) {
nr = strlen(str);
return_value_if_fail(nr > 0, RET_BAD_PARAMS);
name[TK_NAME_LEN] = '\0';
for (i = 0; i < nr; i++) {
if (str[i] == '.') {
strcpy(sub_name, IMAGE_VALUE_MAP_DOT);
@ -159,11 +160,10 @@ static ret_t image_value_on_paint_self(widget_t* widget, canvas_t* c) {
sub_name[1] = '\0';
}
tk_snprintf(name, TK_NAME_LEN, "%s%s", image_value->image, sub_name);
return_value_if_fail(widget_load_image(widget, name, bitmap + i) == RET_OK, RET_BAD_PARAMS);
tk_snprintf(bitmap_name[i], TK_NAME_LEN, "%s%s", image_value->image, sub_name);
}
return image_value_draw_images(widget, c, bitmap, nr);
return image_value_draw_images(widget, c, bitmap_name, nr);
}
static ret_t image_value_get_prop(widget_t* widget, const char* name, value_t* v) {