Tizen 2.1 release
[platform/core/uifw/e17.git] / src / bin / e_widget_image.c
1 #include "e.h"
2
3 typedef struct _E_Widget_Data E_Widget_Data;
4 struct _E_Widget_Data
5 {
6    Evas_Object *img;
7    int minw, minh;
8 };
9
10 static void _e_wid_del_hook(Evas_Object *obj);
11
12 /* local subsystem functions */
13
14 /* externally accessible functions */
15 EAPI Evas_Object *
16 e_widget_image_add_from_object(Evas *evas, Evas_Object *object, int minw, int minh)
17 {
18    Evas_Object *obj, *o;
19    E_Widget_Data *wd;
20    int mw = 0, mh = 0;
21
22    obj = e_widget_add(evas);
23    e_widget_del_hook_set(obj, _e_wid_del_hook);
24    wd = calloc(1, sizeof(E_Widget_Data));
25
26    evas_object_show(object);
27    o = e_icon_add(evas);
28    e_icon_fill_inside_set(o, 1);
29    e_icon_edje_object_set(o, object);
30    wd->img = o;
31    e_widget_data_set(obj, wd);
32    e_widget_can_focus_set(obj, 0);
33    wd->minw = minw <= 0 ? minw : 0;
34    wd->minh = minh <= 0 ? minh : 0;
35    edje_object_size_min_get(object, &mw, &mh);
36    if (minw || minh)
37      e_widget_size_min_set(obj, minw, minh);
38    else
39      e_widget_size_min_set(obj, mw, mh);
40    e_widget_sub_object_add(obj, o);
41    e_widget_resize_object_set(obj, o);
42
43    return obj;
44 }
45
46 EAPI Evas_Object *
47 e_widget_image_add_from_file(Evas *evas, const char *file, int minw, int minh)
48 {
49    Evas_Object *obj, *o;
50    E_Widget_Data *wd;
51
52    obj = e_widget_add(evas);
53    wd = calloc(1, sizeof(E_Widget_Data));
54    if (!wd) return NULL;
55
56    o = e_icon_add(evas);
57    e_icon_fill_inside_set(o, 1);
58    if (!e_icon_file_set(o, file))
59      {
60         evas_object_del(o);
61         free(wd);
62         evas_object_del(obj);
63         return NULL;
64      }
65
66    wd->img = o;
67    evas_object_show(o);
68    e_widget_data_set(obj, wd);
69    e_widget_can_focus_set(obj, 0);
70    e_widget_size_min_set(obj, minw, minh);
71    e_widget_sub_object_add(obj, o);
72    e_widget_resize_object_set(obj, o);
73
74    return obj;
75 }
76
77 EAPI void
78 e_widget_image_edje_set(Evas_Object *obj, const char *file, const char *part)
79 {
80    E_Widget_Data *wd;
81
82    wd = e_widget_data_get(obj);
83    e_icon_file_edje_set(wd->img, file, part);
84    evas_object_show(wd->img);
85 }
86
87 EAPI void
88 e_widget_image_file_set(Evas_Object *obj, const char *file)
89 {
90    E_Widget_Data *wd;
91
92    wd = e_widget_data_get(obj);
93    e_icon_file_set(wd->img, file);
94    evas_object_show(wd->img);
95 }
96
97 EAPI void
98 e_widget_image_file_key_set(Evas_Object *obj, const char *file, const char *key)
99 {
100    E_Widget_Data *wd;
101
102    wd = e_widget_data_get(obj);
103    e_icon_file_key_set(wd->img, file, key);
104    evas_object_show(wd->img);
105 }
106
107 static void
108 _e_wid_del_hook(Evas_Object *obj)
109 {
110    E_Widget_Data *wd;
111
112    wd = e_widget_data_get(obj);
113    free(wd);
114 }