Explorar o código

bring back commit 2079

I over written that commit accidentally, bring it back.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2093 bbd45198-f89e-11dd-88c7-29a3b14d5316
chaos.proton@gmail.com %!s(int64=13) %!d(string=hai) anos
pai
achega
cdd01a2528

+ 15 - 15
components/rtgui/common/image.c

@@ -64,47 +64,47 @@ void rtgui_system_image_init(void)
 #endif
 }
 
-static struct rtgui_image_engine* rtgui_image_get_engine_by_filename(const char* fn)
+static struct rtgui_image_engine* rtgui_image_get_engine(const char* type)
 {
 	struct rtgui_list_node *node;
 	struct rtgui_image_engine *engine;
-	const char* ext;
-
-	ext = fn + rt_strlen(fn);
-	while (ext != fn)
-	{
-		if (*ext == '.') { ext ++; break; }
-		ext --;
-	}
-	if (ext == fn) return RT_NULL; /* no ext */
 
 	rtgui_list_foreach(node, &_rtgui_system_image_list)
 	{
 		engine = rtgui_list_entry(node, struct rtgui_image_engine, list);
-		if (strncasecmp(engine->name, ext, strlen(engine->name)) == 0)
+
+		if (strncasecmp(engine->name, type, strlen(engine->name)) ==0)
 			return engine;
 	}
 
 	return RT_NULL;
 }
 
-static struct rtgui_image_engine* rtgui_image_get_engine(const char* type)
+#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW)
+static struct rtgui_image_engine* rtgui_image_get_engine_by_filename(const char* fn)
 {
 	struct rtgui_list_node *node;
 	struct rtgui_image_engine *engine;
+	const char* ext;
+
+	ext = fn + rt_strlen(fn);
+	while (ext != fn)
+	{
+		if (*ext == '.') { ext ++; break; }
+		ext --;
+	}
+	if (ext == fn) return RT_NULL; /* no ext */
 
 	rtgui_list_foreach(node, &_rtgui_system_image_list)
 	{
 		engine = rtgui_list_entry(node, struct rtgui_image_engine, list);
-
-		if (strncasecmp(engine->name, type, strlen(engine->name)) ==0)
+		if (strncasecmp(engine->name, ext, strlen(engine->name)) == 0)
 			return engine;
 	}
 
 	return RT_NULL;
 }
 
-#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW)
 struct rtgui_image* rtgui_image_create_from_file(const char* type, const char* filename, rt_bool_t load)
 {
 	struct rtgui_filerw* filerw;

+ 1 - 1
components/rtgui/include/rtgui/widgets/list_view.h

@@ -59,7 +59,7 @@ struct rtgui_list_view
     /* the number of item in a page */
     rt_uint16_t page_items;
 	/* current item */
-    rt_uint16_t current_item;
+    rt_int16_t current_item;
 
 	/* icon layout */
 	rt_uint8_t row_items, col_items;

+ 2 - 2
components/rtgui/widgets/list_view.c

@@ -96,7 +96,7 @@ static void rtgui_list_view_onicondraw(struct rtgui_list_view* view, struct rtgu
 	}
 }
 
-static void rtgui_list_view_update_icon(struct rtgui_list_view* view, rt_uint16_t old_item)
+static void rtgui_list_view_update_icon(struct rtgui_list_view* view, rt_int16_t old_item)
 {
 	struct rtgui_rect rect, item_rect, drawing_rect;
 	rt_ubase_t c, r; /* col and row index */
@@ -230,7 +230,7 @@ static void rtgui_list_view_onlistdraw(struct rtgui_list_view* view, struct rtgu
 	}
 }
 
-void rtgui_list_view_update_list(struct rtgui_list_view* view, rt_uint16_t old_item)
+void rtgui_list_view_update_list(struct rtgui_list_view* view, rt_int16_t old_item)
 {
 	struct rtgui_dc* dc;
 	const struct rtgui_list_item* item;