efl

Форк
0
/
edje_part.c 
205 строк · 6.7 Кб
1
#include "edje_private.h"
2
#include "edje_part_helper.h"
3
#define MY_CLASS EFL_CANVAS_LAYOUT_PART_CLASS
4

5
PROXY_IMPLEMENTATION(other, MY_CLASS, EINA_FALSE)
6
#undef PROXY_IMPLEMENTATION
7

8
const char *
9
_part_type_to_string(unsigned char type)
10
{
11
   const char *typestr = "UNKNOWN";
12

13
   switch (type)
14
     {
15
      case EDJE_PART_TYPE_RECTANGLE: typestr = "RECTANGLE"; break;
16
      case EDJE_PART_TYPE_TEXT: typestr = "TEXT"; break;
17
      case EDJE_PART_TYPE_IMAGE: typestr = "IMAGE"; break;
18
      case EDJE_PART_TYPE_SWALLOW: typestr = "SWALLOW"; break;
19
      case EDJE_PART_TYPE_TEXTBLOCK: typestr = "TEXTBLOCK"; break;
20
      case EDJE_PART_TYPE_GRADIENT: typestr = "GRADIENT"; break;
21
      case EDJE_PART_TYPE_GROUP: typestr = "GROUP"; break;
22
      case EDJE_PART_TYPE_BOX: typestr = "BOX"; break;
23
      case EDJE_PART_TYPE_TABLE: typestr = "TABLE"; break;
24
      case EDJE_PART_TYPE_EXTERNAL: typestr = "EXTERNAL"; break;
25
      case EDJE_PART_TYPE_PROXY: typestr = "PROXY"; break;
26
      case EDJE_PART_TYPE_SPACER: typestr = "SPACER"; break;
27
      case EDJE_PART_TYPE_SNAPSHOT: typestr = "SNAPSHOT"; break;
28
      case EDJE_PART_TYPE_VECTOR: typestr = "VECTOR"; break;
29
      default: break;
30
     }
31

32
   return typestr;
33
}
34

35
void
36
_part_reuse_error(Efl_Canvas_Layout_Part_Data *pd)
37
{
38
   Edje *ed;
39

40
   // TODO: Enable full debug only for eo_debug?
41
   // Don't trust pd->ed as it may be invalid now.
42
   ed = efl_data_scope_safe_get(pd->obj, EFL_CANVAS_LAYOUT_CLASS);
43
   if (!ed)
44
     {
45
        ERR("A previous misuse of efl_part has been detected. Handles returned "
46
            "by efl_part() are valid for a single function call. Did you call "
47
            "a non implemented function? obj: %p has been deleted!", pd->obj);
48
        return;
49
     }
50

51
   ERR("A previous misuse of efl_part has been detected. Handles returned "
52
       "by efl_part() are valid for a single function call. Did you call "
53
       "a non implemented function? obj: %p group: '%s' part: '%s' type: %s%s",
54
       pd->obj, ed->group, pd->part, _part_type_to_string(pd->rp->part->type),
55
       ed->delete_me ? ". This object is already deleted." : "");
56
}
57

58
PROXY_INIT(box)
59
PROXY_INIT(table)
60
PROXY_INIT(swallow)
61
PROXY_INIT(external)
62
PROXY_INIT(text)
63
PROXY_INIT(other)
64
PROXY_INIT(invalid)
65

66
void
67
_edje_internal_proxy_shutdown(void)
68
{
69
   _box_shutdown();
70
   _table_shutdown();
71
   _swallow_shutdown();
72
   _external_shutdown();
73
   _text_shutdown();
74
   _invalid_shutdown();
75
   _other_shutdown();
76
}
77

78
void
79
_edje_real_part_set(Eo *obj EINA_UNUSED, Edje *ed, Edje_Real_Part *rp, const char *part)
80
{
81
   Efl_Canvas_Layout_Part_Data *pd;
82

83
   pd = efl_data_scope_get(obj, EFL_CANVAS_LAYOUT_PART_CLASS);
84
   pd->obj = ed->obj;
85
   pd->ed = ed;
86
   pd->rp = rp;
87
   pd->part = part;
88
   efl_parent_set(obj, ed->obj);
89
}
90

91
EOLIAN static Efl_Object *
92
_efl_canvas_layout_part_efl_object_finalize(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
93
{
94
   EINA_SAFETY_ON_FALSE_RETURN_VAL(pd->rp && pd->ed && pd->part, NULL);
95
   return efl_finalize(efl_super(obj, MY_CLASS));
96
}
97

98
EOLIAN Eina_Rect
99
_efl_canvas_layout_part_efl_gfx_entity_geometry_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
100
{
101
   Edje_Real_Part *rp = pd->rp;
102
   Eina_Rect r = EINA_RECT_ZERO();
103

104
   _edje_recalc_do(pd->ed);
105
   if (!rp) return r;
106

107
   return (Eina_Rect) rp->rect;
108
}
109

110
EOLIAN static void
111
_efl_canvas_layout_part_state_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, const char **name, double *val)
112
{
113
   const char *str;
114

115
   if (!name && !val) return;
116
   str = _edje_object_part_state_get(pd->ed, pd->part, val);
117
   if (name) *name = str;
118
}
119

120
EOLIAN static Efl_Canvas_Layout_Part_Type
121
_efl_canvas_layout_part_efl_canvas_layout_part_type_provider_part_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
122
{
123
   Edje_Real_Part *rp;
124

125
   rp = _edje_real_part_recursive_get(&pd->ed, pd->part);
126
   if (!rp || !rp->part) return EFL_CANVAS_LAYOUT_PART_TYPE_NONE;
127

128
   return (Efl_Canvas_Layout_Part_Type) rp->part->type;
129
}
130

131
EOLIAN static Eina_Bool
132
_efl_canvas_layout_part_efl_ui_drag_drag_value_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
133
{
134
   return _edje_object_part_drag_value_set(pd->ed, pd->part, dx, dy);
135
}
136

137
EOLIAN static Eina_Bool
138
_efl_canvas_layout_part_efl_ui_drag_drag_value_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
139
{
140
   return _edje_object_part_drag_value_get(pd->ed, pd->part, dx, dy);
141
}
142

143
EOLIAN static Eina_Bool
144
_efl_canvas_layout_part_efl_ui_drag_drag_size_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dw, double dh)
145
{
146
   return _edje_object_part_drag_size_set(pd->ed, pd->part, dw, dh);
147
}
148

149
EOLIAN static Eina_Bool
150
_efl_canvas_layout_part_efl_ui_drag_drag_size_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dw, double *dh)
151
{
152
   return _edje_object_part_drag_size_get(pd->ed, pd->part, dw, dh);
153
}
154

155
EOLIAN static Efl_Ui_Drag_Dir
156
_efl_canvas_layout_part_efl_ui_drag_drag_dir_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd)
157
{
158
   return (Efl_Ui_Drag_Dir)_edje_object_part_drag_dir_get(pd->ed, pd->part);
159
}
160

161
EOLIAN static Eina_Bool
162
_efl_canvas_layout_part_efl_ui_drag_drag_step_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
163
{
164
   return _edje_object_part_drag_step_set(pd->ed, pd->part, dx, dy);
165
}
166

167
EOLIAN static Eina_Bool
168
_efl_canvas_layout_part_efl_ui_drag_drag_step_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
169
{
170
   return _edje_object_part_drag_step_get(pd->ed, pd->part, dx, dy);
171
}
172

173
EOLIAN static Eina_Bool
174
_efl_canvas_layout_part_efl_ui_drag_drag_step_move(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
175
{
176
   return _edje_object_part_drag_step(pd->ed, pd->part, dx, dy);
177
}
178

179
EOLIAN static Eina_Bool
180
_efl_canvas_layout_part_efl_ui_drag_drag_page_set(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
181
{
182
   return _edje_object_part_drag_page_set(pd->ed, pd->part, dx, dy);
183
}
184

185
EOLIAN static Eina_Bool
186
_efl_canvas_layout_part_efl_ui_drag_drag_page_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double *dx, double *dy)
187
{
188
   return _edje_object_part_drag_page_get(pd->ed, pd->part, dx, dy);
189
}
190

191
EOLIAN static Eina_Bool
192
_efl_canvas_layout_part_efl_ui_drag_drag_page_move(Eo *obj EINA_UNUSED, Efl_Canvas_Layout_Part_Data *pd, double dx, double dy)
193
{
194
   return _edje_object_part_drag_page(pd->ed, pd->part, dx, dy);
195
}
196

197
EOLIAN static void
198
_efl_canvas_layout_part_efl_object_debug_name_override(Eo *obj, Efl_Canvas_Layout_Part_Data *pd, Eina_Strbuf *sb)
199
{
200
   efl_debug_name_override(efl_super(obj, MY_CLASS), sb);
201
   eina_strbuf_append_printf(sb, "%s : %s : %s", pd->part, _part_type_to_string(pd->rp->type), pd->ed->group);
202
}
203

204
#include "efl_canvas_layout_part_type_provider.eo.c"
205
#include "efl_canvas_layout_part.eo.c"
206

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.