elm_public_eolian_files = \
lib/elementary/elm_widget.eo \
lib/elementary/efl_ui_bg.eo \
+ lib/elementary/efl_ui_bg_widget.eo \
lib/elementary/efl_ui_button.eo \
lib/elementary/efl_ui_calendar.eo \
lib/elementary/efl_ui_calendar_item.eo \
lib/elementary/elm_widget_box.h \
lib/elementary/elm_widget_bubble.h \
lib/elementary/efl_ui_button_private.h \
- lib/elementary/efl_ui_bg_private.h \
+ lib/elementary/efl_ui_bg_widget_private.h \
lib/elementary/elm_widget_calendar.h \
lib/elementary/efl_ui_calendar_private.h \
lib/elementary/efl_ui_check_private.h \
lib/elementary/elm_atspi_proxy.h \
lib/elementary/elm_authors.h \
lib/elementary/elm_bg.h \
- lib/elementary/efl_ui_bg_eo.h \
lib/elementary/elm_bg_legacy.h \
lib/elementary/elm_box.h \
lib/elementary/elm_box_legacy.h \
lib/elementary/elm_atspi_ewk_wrapper.c \
lib/elementary/elm_atspi_proxy.c \
lib/elementary/efl_ui_bg.c \
+ lib/elementary/efl_ui_bg_widget.c \
lib/elementary/elm_box.c \
lib/elementary/elm_bubble.c \
lib/elementary/efl_ui_button.c \
{
efl_file_get(ev->object, &f, &k);
o = efl_add(EFL_UI_IMAGE_CLASS, win,
- efl_ui_image_scale_type_set(efl_added, EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE),
+ efl_image_scale_type_set(efl_added, EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE),
efl_file_set(efl_added, f, k)
);
efl_content_set(efl_part(win, "background"), o);
{
Evas_Object *o_bg = data;
- efl_ui_image_scale_type_set(o_bg, efl_ui_nstate_value_get(ev->object));
+ efl_image_scale_type_set(o_bg, efl_ui_nstate_value_get(ev->object));
}
static void
efl_ui_win_autodel_set(efl_added, EINA_TRUE),
efl_ui_win_alpha_set(efl_added, EINA_FALSE));
- efl_add(EFL_UI_BG_CLASS, win,
+ efl_add(EFL_UI_BG_WIDGET_CLASS, win,
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, EFL_GFX_SIZE_HINT_EXPAND),
efl_content_set(win, efl_added));
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
- o_bg = efl_add(EFL_UI_BG_CLASS, box,
+ o_bg = efl_add(EFL_UI_BG_WIDGET_CLASS, box,
efl_file_set(efl_added, buf, NULL),
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, EFL_GFX_SIZE_HINT_EXPAND),
efl_gfx_size_hint_align_set(efl_added, EFL_GFX_SIZE_HINT_FILL, EFL_GFX_SIZE_HINT_FILL),
efl_pack(box, efl_added));
rdg = rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
- efl_ui_radio_state_value_set(efl_added, EFL_UI_IMAGE_SCALE_TYPE_FILL),
+ efl_ui_radio_state_value_set(efl_added, EFL_IMAGE_SCALE_TYPE_FILL),
efl_text_set(efl_added, "Fill"),
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, 0.0),
efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
efl_pack(hbox, efl_added));
rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
- efl_ui_radio_state_value_set(efl_added, EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE),
+ efl_ui_radio_state_value_set(efl_added, EFL_IMAGE_SCALE_TYPE_FIT_INSIDE),
efl_ui_radio_group_add(efl_added, rdg),
efl_text_set(efl_added, "Fit Inside"),
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, 0.0),
rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
- efl_ui_radio_state_value_set(efl_added, EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE),
+ efl_ui_radio_state_value_set(efl_added, EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE),
efl_ui_radio_group_add(efl_added, rdg),
efl_text_set(efl_added, "Fit Outside"),
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, 0.0),
efl_pack(hbox, efl_added));
rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
- efl_ui_radio_state_value_set(efl_added, EFL_UI_IMAGE_SCALE_TYPE_NONE),
+ efl_ui_radio_state_value_set(efl_added, EFL_IMAGE_SCALE_TYPE_NONE),
efl_ui_radio_group_add(efl_added, rdg),
efl_text_set(efl_added, "None"),
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, 0.0),
efl_pack(hbox, efl_added));
rd = efl_add(EFL_UI_RADIO_CLASS, hbox,
- efl_ui_radio_state_value_set(efl_added, EFL_UI_IMAGE_SCALE_TYPE_TILE),
+ efl_ui_radio_state_value_set(efl_added, EFL_IMAGE_SCALE_TYPE_TILE),
efl_ui_radio_group_add(efl_added, rdg),
efl_text_set(efl_added, "Tile"),
efl_gfx_size_hint_weight_set(efl_added, EFL_GFX_SIZE_HINT_EXPAND, 0.0),
efl_event_callback_add(efl_added, EFL_UI_RADIO_EVENT_CHANGED, _cb_radio_changed_scale_type, o_bg),
efl_pack(hbox, efl_added));
- efl_ui_nstate_value_set(rdg, EFL_UI_IMAGE_SCALE_TYPE_FILL);
+ efl_ui_nstate_value_set(rdg, EFL_IMAGE_SCALE_TYPE_FILL);
efl_add(EFL_UI_CHECK_CLASS, hbox,
efl_text_set(efl_added, "Bg Color"),
img = efl_add(EFL_UI_IMAGE_CLASS, win,
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(64, 64)),
efl_file_set(efl_added, buf, NULL));
- efl_ui_image_scale_type_set(img, EFL_UI_IMAGE_SCALE_TYPE_FILL);
+ efl_image_scale_type_set(img, EFL_IMAGE_SCALE_TYPE_FILL);
evas_object_event_callback_add(img, EVAS_CALLBACK_RESIZE,
_image_resize_cb, NULL);
img = efl_add(EFL_UI_IMAGE_CLASS, win,
efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(64, 64)),
efl_file_set(efl_added, buf, NULL));
- efl_ui_image_scale_type_set(img, EFL_UI_IMAGE_SCALE_TYPE_FILL);
+ efl_image_scale_type_set(img, EFL_IMAGE_SCALE_TYPE_FILL);
evas_object_event_callback_add(img, EVAS_CALLBACK_RESIZE,
_image_resize_cb, NULL);
}
static const struct {
- Efl_Ui_Image_Scale_Type scale_type;
+ Efl_Image_Scale_Type scale_type;
const char *name;
} images_scale_type[] = {
- { EFL_UI_IMAGE_SCALE_TYPE_NONE, "None" },
- { EFL_UI_IMAGE_SCALE_TYPE_FILL, "Fill" },
- { EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE, "Fit Inside" },
- { EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE, "Fit Outside" },
- { EFL_UI_IMAGE_SCALE_TYPE_TILE, "Tile" },
+ { EFL_IMAGE_SCALE_TYPE_NONE, "None" },
+ { EFL_IMAGE_SCALE_TYPE_FILL, "Fill" },
+ { EFL_IMAGE_SCALE_TYPE_FIT_INSIDE, "Fit Inside" },
+ { EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE, "Fit Outside" },
+ { EFL_IMAGE_SCALE_TYPE_TILE, "Tile" },
{ 0, NULL }
};
Evas_Object *rdg = evas_object_data_get(win, "rdg");
int v = elm_radio_value_get(rdg);
- efl_ui_image_scale_type_set(im, images_scale_type[v].scale_type);
+ efl_image_scale_type_set(im, images_scale_type[v].scale_type);
fprintf(stderr, "Set %d[%s] and got %d\n",
- images_scale_type[v].scale_type, images_scale_type[v].name, efl_ui_image_scale_type_get(im));
+ images_scale_type[v].scale_type, images_scale_type[v].name, efl_image_scale_type_get(im));
}
void
{
Evas_Object *radio = data;
Evas_Object *target;
- Efl_Ui_Image_Scale_Type type;
+ Efl_Image_Scale_Type type;
char buf[PATH_MAX];
radio = efl_ui_radio_selected_object_get(radio);
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
efl_file_set(efl_part(target, "background"), buf, NULL);
- type = efl_ui_image_scale_type_get(efl_part(target, "background"));
+ type = efl_image_scale_type_get(efl_part(target, "background"));
type = (type + 1) % 5;
- efl_ui_image_scale_type_set(efl_part(target, "background"), type);
+ efl_image_scale_type_set(efl_part(target, "background"), type);
}
static Evas_Object *
content_class[10] = EFL_UI_FLIP_CLASS;
content_class[11] = EFL_UI_PANES_CLASS;
content_class[12] = EFL_UI_VIDEO_CLASS;
- content_class[13] = EFL_UI_BG_CLASS;
+ content_class[13] = EFL_UI_BG_WIDGET_CLASS;
content_class[14] = EFL_UI_IMAGE_CLASS;
content_class[15] = EFL_UI_IMAGE_ZOOMABLE_CLASS;
content_class[16] = EFL_UI_NSTATE_CLASS;
path = "performance/background.png";
efl::ui::Bg bg(instantiate, win);
- bg.scale_type_set(EFL_UI_IMAGE_SCALE_TYPE_FILL);
+ bg.scale_type_set(EFL_IMAGE_SCALE_TYPE_FILL);
bg.file_set(path, nullptr);
win.content_set(bg);
std::cout << ", name = " << icon.icon_get() << std::endl;
- icon.scale_type_set(EFL_UI_IMAGE_SCALE_TYPE_NONE);
+ icon.scale_type_set(EFL_IMAGE_SCALE_TYPE_NONE);
//icon.resizable_set(false, true);
//icon.smooth_set(false);
//icon.fill_outside_set(true);
static = 2 [[Image will not be re-scaled over time, thus turning scaling cache ON for its data.]]
}
+enum Efl.Image.Scale_Type
+{
+ [[Enumeration that defines scale types of an image.]]
+ fill, [[Scale the image so that it matches
+ the object's area exactly.
+ The image's aspect ratio might be changed.]]
+ fit_inside, [[Scale the image
+ so that it fits inside the object's area
+ while maintaining the aspect ratio.
+ At least one of the dimensions of the image
+ should be equal to the corresponding dimension
+ of the object.]]
+ fit_outside, [[Scale the image
+ so that it covers the entire object area
+ while maintaining the aspect ratio.
+ At least one of the dimensions of the image
+ should be equal to the corresponding
+ dimension of the object.]]
+ tile, [[Tile image at its original size.]]
+ none [[Not scale the image]]
+}
+
interface Efl.Image ()
{
[[Common APIs for all 2D images that can be rendered on the canvas.]]
smooth_scale: bool; [[Whether to use smooth scale or not.]]
}
}
+ @property scale_type {
+ [[Control how the image is scaled.]]
+ values {
+ scale_type: Efl.Image.Scale_Type; [[Image scale type]]
+ }
+ }
@property ratio {
[[The native width/height ratio of the image.]]
get {
# include <efl_ui_layout_part_text.eo.h>
# include <efl_ui_layout_part_table.eo.h>
# include <efl_ui_win_part.eo.h>
+# include <efl_ui_bg.eo.h>
+# include <efl_ui_bg_widget.eo.h>
# include <efl_ui_box.eo.h>
# include <efl_ui_box_flow.eo.h>
# include <efl_ui_box_stack.eo.h>
# include <efl_ui_image_zoomable_eo.h>
# include <efl_ui_progressbar_eo.h>
# include <efl_ui_radio_eo.h>
-# include <efl_ui_bg_eo.h>
# include <efl_ui_panes_eo.h>
/**
# include <efl_ui_layout_part_text.eo.h>
# include <efl_ui_layout_part_table.eo.h>
# include <efl_ui_win_part.eo.h>
+# include <efl_ui_bg.eo.h>
+# include <efl_ui_bg_widget.eo.h>
# include <efl_ui_box.eo.h>
# include <efl_ui_box_flow.eo.h>
# include <efl_ui_box_stack.eo.h>
# include "elementary_config.h"
#endif
-#define EFL_ACCESS_PROTECTED
-#define ELM_LAYOUT_PROTECTED
-
#include <Elementary.h>
#include "elm_priv.h"
-#include "efl_ui_bg_private.h"
-#include "elm_widget_layout.h"
-
-#define MY_CLASS EFL_UI_BG_CLASS
-#define MY_CLASS_PFX efl_ui_bg
-
-#define MY_CLASS_NAME "Efl.Ui.Bg"
-#define MY_CLASS_NAME_LEGACY "elm_bg"
-
-static const Elm_Layout_Part_Alias_Description _content_aliases[] =
-{
- {"overlay", "elm.swallow.content"},
- {NULL, NULL}
-};
-
-// TIZEN_ONLY(20160218): Improve launching performance.
-static Evas_Object *_precreated_bg_obj = NULL;
-//
-
-EOLIAN static void
-_efl_ui_bg_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Bg_Data *sd)
-{
- Evas_Coord iw = 0, ih = 0, mw = -1, mh = -1;
- Evas_Coord bx = 0, by = 0, bw = 0, bh = 0;
- Evas_Coord fx = 0, fy = 0, fw = 0, fh = 0;
- const char *p;
-
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
- if ((!sd->img) || (!sd->file)) return;
- if (((p = strrchr(sd->file, '.'))) && (!strcasecmp(p, ".edj"))) return;
-
- /* grab image size */
- evas_object_image_size_get(sd->img, &iw, &ih);
- if ((iw < 1) || (ih < 1)) return;
-
- /* grab base object dimensions */
- evas_object_geometry_get
- (wd->resize_obj, &bx, &by, &bw, &bh);
-
- switch (sd->scale_type)
- {
- case EFL_UI_IMAGE_SCALE_TYPE_NONE:
- fw = mw = iw;
- fh = mh = ih;
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_FILL:
- fw = bw;
- fh = bh;
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE:
- mw = fw = bw;
- mh = fh = ((ih * fw) / iw);
- if (fh > bh)
- {
- mh = fh = bh;
- mw = fw = ((iw * fh) / ih);
- }
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE:
- fw = bw;
- fh = ((ih * fw) / iw);
- if (fh < bh)
- {
- fh = bh;
- fw = ((iw * fh) / ih);
- }
- fx = ((bw - fw) / 2);
- fy = ((bh - fh) / 2);
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_TILE:
- fw = iw;
- fh = ih;
- break;
- }
-
- evas_object_image_fill_set(sd->img, fx, fy, fw, fh);
-
- evas_object_size_hint_min_set(sd->img, mw, mh);
- evas_object_size_hint_max_set(sd->img, mw, mh);
-}
-
-static void
-_on_resize(void *data,
- Evas *e EINA_UNUSED,
- Evas_Object *obj EINA_UNUSED,
- void *event_info EINA_UNUSED)
-{
- elm_layout_sizing_eval(data);
-}
-
-EOLIAN static void
-_efl_ui_bg_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Bg_Data *priv)
-{
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
- priv->rect = evas_object_rectangle_add(evas_object_evas_get(obj));
- evas_object_color_set(priv->rect, 0, 0, 0, 0);
-
- if (!elm_widget_theme_klass_get(obj))
- elm_widget_theme_klass_set(obj, "bg");
- efl_canvas_group_add(efl_super(obj, MY_CLASS));
- elm_widget_sub_object_parent_add(obj);
- elm_widget_can_focus_set(obj, EINA_FALSE);
-
- priv->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
-
- evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _on_resize, obj);
-
- if (!elm_widget_theme_object_set(obj, wd->resize_obj,
- elm_widget_theme_klass_get(obj),
- elm_widget_theme_element_get(obj),
- elm_widget_theme_style_get(obj)))
- CRI("Failed to set layout!");
- elm_layout_content_set(obj, "elm.swallow.rectangle", priv->rect);
-}
-
-// TIZEN_ONLY(20160218): Improve launching performance.
-EAPI void
-elm_bg_precreated_object_set(Evas_Object *obj)
-{
- INF("Set precreated obj(%p).", obj);
- _precreated_bg_obj = obj;
-}
-
-EAPI Evas_Object *
-elm_bg_precreated_object_get(void)
-{
- INF("Get precreated obj(%p).", _precreated_bg_obj);
- return _precreated_bg_obj;
-}
-//
-
-EAPI Evas_Object *
-elm_bg_add(Evas_Object *parent)
-{
- EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
- return elm_legacy_add(MY_CLASS, parent);
-}
-
-EOLIAN static Eo *
-_efl_ui_bg_efl_object_constructor(Eo *obj, Efl_Ui_Bg_Data *_pd EINA_UNUSED)
-{
- obj = efl_constructor(efl_super(obj, MY_CLASS));
- efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
- efl_access_type_set(obj, EFL_ACCESS_TYPE_DISABLED);
-
- //TIZEN_ONLY (20171114) imporove object at xy get function
- efl_access_role_set(obj, EFL_ACCESS_ROLE_REDUNDANT_OBJECT);
- //
-
- efl_ui_widget_focus_allow_set(obj, EINA_FALSE);
-
- return obj;
-}
-
-/* FIXME: Efl.Canvas.group_member_add in Elm.Widget sets child's colors as the same
- * with that of obj. The color of resize_obj of Bg should not be changed
- * because actual color is the color of rectangle in resize_obj.
- */
-EOLIAN static void
-_efl_ui_bg_efl_canvas_group_group_member_add(Eo *obj, Efl_Ui_Bg_Data *_pd EINA_UNUSED, Evas_Object *child)
-{
- efl_canvas_group_member_add(efl_super(obj, MY_CLASS), child);
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
- if (wd->resize_obj == child)
- evas_object_color_set(child, 255, 255, 255, 255);
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_bg_efl_file_file_set(Eo *obj, Efl_Ui_Bg_Data *sd, const char *file, const char *group)
-{
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-
- const char *p;
- Eina_Bool int_ret;
-
- ELM_SAFE_FREE(sd->img, evas_object_del);
- if (!file)
- {
- ELM_SAFE_FREE(sd->file, eina_stringshare_del);
- ELM_SAFE_FREE(sd->group, eina_stringshare_del);
- return EINA_TRUE;
- }
- eina_stringshare_replace(&sd->file, file);
- eina_stringshare_replace(&sd->group, group);
- if (((p = strrchr(file, '.'))) && (!strcasecmp(p, ".edj")))
- {
- sd->img = edje_object_add
- (evas_object_evas_get(wd->resize_obj));
- int_ret = edje_object_file_set(sd->img, file, group);
- }
- else
- {
- int err;
-
- sd->img = evas_object_image_add
- (evas_object_evas_get(wd->resize_obj));
- evas_object_image_load_orientation_set(sd->img, EINA_TRUE);
- if ((sd->load_opts.w > 0) && (sd->load_opts.h > 0))
- evas_object_image_load_size_set
- (sd->img, sd->load_opts.w, sd->load_opts.h);
- evas_object_image_file_set(sd->img, file, group);
-
- err = evas_object_image_load_error_get(sd->img);
- if (err != EVAS_LOAD_ERROR_NONE)
- {
- ERR("Could not load image '%s': %s",
- file, evas_load_error_str(err));
- int_ret = EINA_FALSE;
- }
- else
- int_ret = EINA_TRUE;
- }
-
- evas_object_repeat_events_set(sd->img, EINA_TRUE);
-
- int_ret &= elm_layout_content_set(obj, "elm.swallow.background", sd->img);
-
- elm_layout_sizing_eval(obj);
-
- return int_ret;
-}
-
-EOLIAN static void
-_efl_ui_bg_efl_file_file_get(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Data *sd, const char **file, const char **group)
-{
- if (file) *file = sd->file;
- if (group) *group = sd->group;
-}
-
-EAPI void
-elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option)
-{
- EFL_UI_BG_DATA_GET(obj, sd);
- switch (option)
- {
- case ELM_BG_OPTION_CENTER:
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_NONE;
- break;
- case ELM_BG_OPTION_SCALE:
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
- break;
- case ELM_BG_OPTION_TILE:
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_TILE;
- break;
- case ELM_BG_OPTION_STRETCH:
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FILL;
- break;
- case ELM_BG_OPTION_LAST:
- default:
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
- }
-
- elm_layout_sizing_eval(obj);
-}
-
-EAPI Elm_Bg_Option
-elm_bg_option_get(const Evas_Object *obj)
-{
- Elm_Bg_Option option = ELM_BG_OPTION_LAST;
- EFL_UI_BG_DATA_GET(obj, sd);
-
- switch (sd->scale_type)
- {
- case EFL_UI_IMAGE_SCALE_TYPE_NONE:
- option = ELM_BG_OPTION_CENTER;
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE:
- option = ELM_BG_OPTION_SCALE;
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_TILE:
- option = ELM_BG_OPTION_TILE;
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_FILL:
- option = ELM_BG_OPTION_STRETCH;
- break;
- case EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE:
- default:
- ERR("Scale type %d cannot be converted to Elm_Bg_Option", sd->scale_type);
- break;
- }
- return option;
-}
-
-EOLIAN static void
-_efl_ui_bg_efl_ui_image_scale_type_set(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Data *sd, Efl_Ui_Image_Scale_Type scale_type)
-{
- sd->scale_type = scale_type;
-
- elm_layout_sizing_eval(obj);
-}
-
-EOLIAN static Efl_Ui_Image_Scale_Type
-_efl_ui_bg_efl_ui_image_scale_type_get(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Data *sd)
-{
- return sd->scale_type;
-}
-
-EAPI void
-elm_bg_color_set(Evas_Object *obj,
- int r,
- int g,
- int b)
-{
- int a = 255;
- EFL_UI_BG_CHECK(obj);
-
- // reset color
- if ((r == -1) && (g == -1) && (b == -1))
- {
- r = g = b = a = 0;
- }
- efl_gfx_color_set(obj, r, g, b, a);
-}
-
-EOLIAN static void
-_efl_ui_bg_efl_gfx_color_set(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Data *sd, int r, int g, int b, int a)
-{
- evas_object_color_set(sd->rect, r, g, b, a);
-}
-
-EAPI void
-elm_bg_color_get(const Evas_Object *obj,
- int *r,
- int *g,
- int *b)
-{
- EFL_UI_BG_CHECK(obj);
- efl_gfx_color_get((Eo *) obj, r, g, b, NULL);
-}
-
-EOLIAN static void
-_efl_ui_bg_efl_gfx_color_get(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Data *sd, int *r, int *g, int *b, int *a)
-{
- evas_object_color_get(sd->rect, r, g, b, a);
-}
-
-EAPI void
-elm_bg_load_size_set(Evas_Object *obj, int w, int h)
-{
- const char *p;
- EFL_UI_BG_DATA_GET(obj, sd);
-
- sd->load_opts.w = w;
- sd->load_opts.h = h;
- if (!sd->img) return;
-
- if (!(((p = strrchr(sd->file, '.'))) && (!strcasecmp(p, ".edj"))))
- evas_object_image_load_size_set(sd->img, w, h);
-}
-
-static void
-_efl_ui_bg_class_constructor(Efl_Class *klass)
-{
- evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
-}
-
-EAPI Eina_Bool
-elm_bg_file_set(Eo *obj, const char *file, const char *group)
-{
- return efl_file_set((Eo *) obj, file, group);
-}
-
-EAPI void
-elm_bg_file_get(const Eo *obj, const char **file, const char **group)
-{
- efl_file_get((Eo *) obj, file, group);
-}
-
-/* Internal EO APIs and hidden overrides */
-
-ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
-
-#define EFL_UI_BG_EXTRA_OPS \
- ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
- ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_bg), \
- EFL_CANVAS_GROUP_ADD_OPS(efl_ui_bg)
#include "efl_ui_bg.eo.c"
-class Efl.Ui.Bg (Efl.Ui.Layout, Efl.Ui.Image)
+interface Efl.Ui.Bg (Efl.Interface, Efl.Gfx, Efl.Image, Efl.File)
{
[[The bg (background) widget is used for setting (solid) background decorations
works just like an image, but has some properties useful to a background, like
setting it to tiled, centered, scaled or stretched.
]]
- legacy_prefix: elm_bg;
- implements {
- class.constructor;
- Efl.Object.constructor;
- Efl.Canvas.Group.group_member_add;
- Efl.File.file { get; set; }
- Efl.Gfx.color { get; set; }
- Efl.Ui.Image.scale_type { get; set; }
- }
}
+++ /dev/null
-#include "efl_ui_bg.eo.h"
\ No newline at end of file
--- /dev/null
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#define EFL_ACCESS_PROTECTED
+#define ELM_LAYOUT_PROTECTED
+
+#include <Elementary.h>
+#include "elm_priv.h"
+#include "efl_ui_bg_widget_private.h"
+
+#define MY_CLASS EFL_UI_BG_WIDGET_CLASS
+#define MY_CLASS_PFX efl_ui_bg_widget
+
+#define MY_CLASS_NAME "Efl.Ui.Bg_Widget"
+#define MY_CLASS_NAME_LEGACY "elm_bg"
+
+static const Elm_Layout_Part_Alias_Description _content_aliases[] =
+{
+ {"overlay", "elm.swallow.content"},
+ {NULL, NULL}
+};
+
+EOLIAN static void
+_efl_ui_bg_widget_elm_layout_sizing_eval(Eo *obj, Efl_Ui_Bg_Widget_Data *sd)
+{
+ Evas_Coord iw = 0, ih = 0, mw = -1, mh = -1;
+ Evas_Coord bx = 0, by = 0, bw = 0, bh = 0;
+ Evas_Coord fx = 0, fy = 0, fw = 0, fh = 0;
+ const char *p;
+
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+
+ if ((!sd->img) || (!sd->file)) return;
+ if (((p = strrchr(sd->file, '.'))) && (!strcasecmp(p, ".edj"))) return;
+
+ /* grab image size */
+ evas_object_image_size_get(sd->img, &iw, &ih);
+ if ((iw < 1) || (ih < 1)) return;
+
+ /* grab base object dimensions */
+ evas_object_geometry_get
+ (wd->resize_obj, &bx, &by, &bw, &bh);
+
+ switch (sd->scale_type)
+ {
+ case EFL_IMAGE_SCALE_TYPE_NONE:
+ fw = mw = iw;
+ fh = mh = ih;
+ break;
+ case EFL_IMAGE_SCALE_TYPE_FILL:
+ fw = bw;
+ fh = bh;
+ break;
+ case EFL_IMAGE_SCALE_TYPE_FIT_INSIDE:
+ mw = fw = bw;
+ mh = fh = ((ih * fw) / iw);
+ if (fh > bh)
+ {
+ mh = fh = bh;
+ mw = fw = ((iw * fh) / ih);
+ }
+ break;
+ case EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE:
+ fw = bw;
+ fh = ((ih * fw) / iw);
+ if (fh < bh)
+ {
+ fh = bh;
+ fw = ((iw * fh) / ih);
+ }
+ fx = ((bw - fw) / 2);
+ fy = ((bh - fh) / 2);
+ break;
+ case EFL_IMAGE_SCALE_TYPE_TILE:
+ fw = iw;
+ fh = ih;
+ break;
+ }
+
+ evas_object_image_fill_set(sd->img, fx, fy, fw, fh);
+
+ evas_object_size_hint_min_set(sd->img, mw, mh);
+ evas_object_size_hint_max_set(sd->img, mw, mh);
+}
+
+static void
+_on_resize(void *data,
+ Evas *e EINA_UNUSED,
+ Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ elm_layout_sizing_eval(data);
+}
+
+EAPI Evas_Object *
+elm_bg_add(Evas_Object *parent)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
+ return elm_legacy_add(MY_CLASS, parent);
+}
+
+EOLIAN static Eo *
+_efl_ui_bg_widget_efl_object_constructor(Eo *obj, Efl_Ui_Bg_Widget_Data *pd)
+{
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
+
+ if (!elm_widget_theme_klass_get(obj))
+ elm_widget_theme_klass_set(obj, "bg");
+
+ obj = efl_constructor(efl_super(obj, MY_CLASS));
+ elm_widget_sub_object_parent_add(obj);
+ elm_widget_can_focus_set(obj, EINA_FALSE);
+ evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _on_resize, obj);
+
+ if (!elm_widget_theme_object_set(obj, wd->resize_obj,
+ elm_widget_theme_klass_get(obj),
+ elm_widget_theme_element_get(obj),
+ elm_widget_theme_style_get(obj)))
+ CRI("Failed to set layout!");
+
+ pd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
+ pd->rect = efl_add(EFL_CANVAS_RECTANGLE_CLASS, obj,
+ efl_gfx_color_set(efl_added, 0, 0, 0, 0),
+ efl_content_set(efl_part(obj, "elm.swallow.rectangle"), efl_added));
+
+ efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
+ efl_access_type_set(obj, EFL_ACCESS_TYPE_DISABLED);
+
+ efl_ui_widget_focus_allow_set(obj, EINA_FALSE);
+
+ return obj;
+}
+
+EOLIAN static Eina_Bool
+_efl_ui_bg_widget_efl_file_file_set(Eo *obj, Efl_Ui_Bg_Widget_Data *sd, const char *file, const char *group)
+{
+ ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+
+ const char *p;
+ Eina_Bool int_ret;
+
+ ELM_SAFE_FREE(sd->img, evas_object_del);
+ if (!file)
+ {
+ ELM_SAFE_FREE(sd->file, eina_stringshare_del);
+ ELM_SAFE_FREE(sd->group, eina_stringshare_del);
+ return EINA_TRUE;
+ }
+ eina_stringshare_replace(&sd->file, file);
+ eina_stringshare_replace(&sd->group, group);
+ if (((p = strrchr(file, '.'))) && (!strcasecmp(p, ".edj")))
+ {
+ sd->img = edje_object_add
+ (evas_object_evas_get(wd->resize_obj));
+ int_ret = edje_object_file_set(sd->img, file, group);
+ }
+ else
+ {
+ int err;
+
+ sd->img = evas_object_image_add
+ (evas_object_evas_get(wd->resize_obj));
+ evas_object_image_load_orientation_set(sd->img, EINA_TRUE);
+ if ((sd->load_opts.w > 0) && (sd->load_opts.h > 0))
+ evas_object_image_load_size_set
+ (sd->img, sd->load_opts.w, sd->load_opts.h);
+ evas_object_image_file_set(sd->img, file, group);
+
+ err = evas_object_image_load_error_get(sd->img);
+ if (err != EVAS_LOAD_ERROR_NONE)
+ {
+ ERR("Could not load image '%s': %s",
+ file, evas_load_error_str(err));
+ int_ret = EINA_FALSE;
+ }
+ else
+ int_ret = EINA_TRUE;
+ }
+
+ evas_object_repeat_events_set(sd->img, EINA_TRUE);
+
+ int_ret &= elm_layout_content_set(obj, "elm.swallow.background", sd->img);
+
+ elm_layout_sizing_eval(obj);
+
+ return int_ret;
+}
+
+EOLIAN static void
+_efl_ui_bg_widget_efl_file_file_get(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Widget_Data *sd, const char **file, const char **group)
+{
+ if (file) *file = sd->file;
+ if (group) *group = sd->group;
+}
+
+EAPI void
+elm_bg_option_set(Evas_Object *obj, Elm_Bg_Option option)
+{
+ EFL_UI_BG_WIDGET_DATA_GET(obj, sd);
+ switch (option)
+ {
+ case ELM_BG_OPTION_CENTER:
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_NONE;
+ break;
+ case ELM_BG_OPTION_SCALE:
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
+ break;
+ case ELM_BG_OPTION_TILE:
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_TILE;
+ break;
+ case ELM_BG_OPTION_STRETCH:
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_FILL;
+ break;
+ case ELM_BG_OPTION_LAST:
+ default:
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
+ }
+
+ elm_layout_sizing_eval(obj);
+}
+
+EAPI Elm_Bg_Option
+elm_bg_option_get(const Evas_Object *obj)
+{
+ Elm_Bg_Option option = ELM_BG_OPTION_LAST;
+ EFL_UI_BG_WIDGET_DATA_GET(obj, sd);
+
+ switch (sd->scale_type)
+ {
+ case EFL_IMAGE_SCALE_TYPE_NONE:
+ option = ELM_BG_OPTION_CENTER;
+ break;
+ case EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE:
+ option = ELM_BG_OPTION_SCALE;
+ break;
+ case EFL_IMAGE_SCALE_TYPE_TILE:
+ option = ELM_BG_OPTION_TILE;
+ break;
+ case EFL_IMAGE_SCALE_TYPE_FILL:
+ option = ELM_BG_OPTION_STRETCH;
+ break;
+ case EFL_IMAGE_SCALE_TYPE_FIT_INSIDE:
+ default:
+ ERR("Scale type %d cannot be converted to Elm_Bg_Option", sd->scale_type);
+ break;
+ }
+ return option;
+}
+
+EOLIAN static void
+_efl_ui_bg_widget_efl_image_scale_type_set(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Widget_Data *sd, Efl_Image_Scale_Type scale_type)
+{
+ sd->scale_type = scale_type;
+
+ elm_layout_sizing_eval(obj);
+}
+
+EOLIAN static Efl_Image_Scale_Type
+_efl_ui_bg_widget_efl_image_scale_type_get(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Widget_Data *sd)
+{
+ return sd->scale_type;
+}
+
+EAPI void
+elm_bg_color_set(Evas_Object *obj,
+ int r,
+ int g,
+ int b)
+{
+ int a = 255;
+ EFL_UI_BG_WIDGET_CHECK(obj);
+
+ // reset color
+ if ((r == -1) && (g == -1) && (b == -1))
+ {
+ r = g = b = a = 0;
+ }
+ efl_gfx_color_set(obj, r, g, b, a);
+}
+
+EOLIAN static void
+_efl_ui_bg_widget_efl_gfx_color_set(Eo *obj EINA_UNUSED, Efl_Ui_Bg_Widget_Data *sd, int r, int g, int b, int a)
+{
+ efl_gfx_color_set(sd->rect, r, g, b, a);
+}
+
+EAPI void
+elm_bg_color_get(const Evas_Object *obj,
+ int *r,
+ int *g,
+ int *b)
+{
+ EFL_UI_BG_WIDGET_CHECK(obj);
+ efl_gfx_color_get((Eo *) obj, r, g, b, NULL);
+}
+
+EOLIAN static void
+_efl_ui_bg_widget_efl_gfx_color_get(Eo *obj, Efl_Ui_Bg_Widget_Data *sd, int *r, int *g, int *b, int *a)
+{
+ if (!sd->rect)
+ efl_gfx_color_get(efl_super(obj, MY_CLASS), r, g, b, a);
+ else
+ efl_gfx_color_get(sd->rect, r, g, b, a);
+}
+
+EAPI void
+elm_bg_load_size_set(Evas_Object *obj, int w, int h)
+{
+ const char *p;
+ EFL_UI_BG_WIDGET_DATA_GET(obj, sd);
+
+ sd->load_opts.w = w;
+ sd->load_opts.h = h;
+ if (!sd->img) return;
+
+ if (!(((p = strrchr(sd->file, '.'))) && (!strcasecmp(p, ".edj"))))
+ evas_object_image_load_size_set(sd->img, w, h);
+}
+
+static void
+_efl_ui_bg_widget_class_constructor(Efl_Class *klass)
+{
+ evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
+}
+
+EAPI Eina_Bool
+elm_bg_file_set(Eo *obj, const char *file, const char *group)
+{
+ return efl_file_set((Eo *) obj, file, group);
+}
+
+EAPI void
+elm_bg_file_get(const Eo *obj, const char **file, const char **group)
+{
+ efl_file_get((Eo *) obj, file, group);
+}
+
+/* Internal EO APIs and hidden overrides */
+
+ELM_LAYOUT_CONTENT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
+
+#define EFL_UI_BG_WIDGET_EXTRA_OPS \
+ ELM_LAYOUT_CONTENT_ALIASES_OPS(MY_CLASS_PFX), \
+ ELM_LAYOUT_SIZING_EVAL_OPS(efl_ui_bg_widget)
+
+#include "efl_ui_bg_widget.eo.c"
--- /dev/null
+class Efl.Ui.Bg_Widget (Efl.Ui.Layout, Efl.Ui.Bg)
+{
+ [[The bg (background) widget is used for setting (solid) background decorations
+
+ to a window (unless it has transparency enabled) or to any container object. It
+ works just like an image, but has some properties useful to a background, like
+ setting it to tiled, centered, scaled or stretched.
+ ]]
+ legacy_prefix: elm_bg;
+ implements {
+ class.constructor;
+ Efl.Object.constructor;
+ Efl.File.file { get; set; }
+ //Efl.File.mmap { get; set; }
+ Efl.Gfx.color { get; set; }
+ Efl.Image.scale_type { get; set; }
+ }
+}
/**
* Base layout smart data extended with bg instance data.
*/
-typedef struct _Efl_Ui_Bg_Data Efl_Ui_Bg_Data;
-struct _Efl_Ui_Bg_Data
+typedef struct _Efl_Ui_Bg_Widget_Data Efl_Ui_Bg_Widget_Data;
+struct _Efl_Ui_Bg_Widget_Data
{
Evas_Object *rect; /*<< Used for elm_bg_color_set(): elm.swallow.rectangle */
Evas_Object *img; /*<< Used for elm_bg_file_set(): elm.swallow.content */
const char *file, *group; /*<< path to file and group name to give life to "img": elm.swallow.background */
- Efl_Ui_Image_Scale_Type scale_type;
+ Efl_Image_Scale_Type scale_type;
struct
{
* @}
*/
-#define EFL_UI_BG_DATA_GET(o, sd) \
-Efl_Ui_Bg_Data * sd = efl_data_scope_get(o, EFL_UI_BG_CLASS)
+#define EFL_UI_BG_WIDGET_DATA_GET(o, sd) \
+Efl_Ui_Bg_Widget_Data * sd = efl_data_scope_get(o, EFL_UI_BG_WIDGET_CLASS)
-#define EFL_UI_BG_DATA_GET_OR_RETURN(o, ptr) \
- EFL_UI_BG_DATA_GET(o, ptr); \
+#define EFL_UI_BG_WIDGET_DATA_GET_OR_RETURN(o, ptr) \
+ EFL_UI_BG_WIDGET_DATA_GET(o, ptr); \
if (EINA_UNLIKELY(!ptr)) \
{ \
CRI("No widget data for object %p (%s)", \
return; \
}
-#define EFL_UI_BG_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
- EFL_UI_BG_DATA_GET(o, ptr); \
+#define EFL_UI_BG_WIDGET_DATA_GET_OR_RETURN_VAL(o, ptr, val) \
+ EFL_UI_BG_WIDGET_DATA_GET(o, ptr); \
if (EINA_UNLIKELY(!ptr)) \
{ \
CRI("No widget data for object %p (%s)", \
return val; \
}
-#define EFL_UI_BG_CHECK(obj) \
- if (EINA_UNLIKELY(!efl_isa((obj), EFL_UI_BG_CLASS))) \
+#define EFL_UI_BG_WIDGET_CHECK(obj) \
+ if (EINA_UNLIKELY(!efl_isa((obj), EFL_UI_BG_WIDGET_CLASS))) \
return
#endif
// according to (iw x ih), (sd->img_w x sd->img_h), and scale_type
switch (sd->scale_type)
{
- case EFL_UI_IMAGE_SCALE_TYPE_NONE:
+ case EFL_IMAGE_SCALE_TYPE_NONE:
w = iw;
h = ih;
break;
- case EFL_UI_IMAGE_SCALE_TYPE_FILL:
+ case EFL_IMAGE_SCALE_TYPE_FILL:
w = sd->img_w;
h = sd->img_h;
break;
- case EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE:
+ case EFL_IMAGE_SCALE_TYPE_FIT_INSIDE:
w = sd->img_w;
h = ((double)ih * w) / (double)iw;
h = ih;
}
break;
- case EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE:
+ case EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE:
w = sd->img_w;
h = ((double)ih * w) / (double)iw;
if (h < sd->img_h)
h = ih;
}
break;
- case EFL_UI_IMAGE_SCALE_TYPE_TILE:
+ case EFL_IMAGE_SCALE_TYPE_TILE:
x = sd->img_x;
y = sd->img_y;
w = sd->img_w;
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
efl_access_role_set(obj, EFL_ACCESS_ROLE_IMAGE);
- pd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE;
+ pd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_INSIDE;
pd->self = obj;
return obj;
}
EOLIAN static void
-_efl_ui_image_scale_type_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd EINA_UNUSED, Efl_Ui_Image_Scale_Type scale_type)
+_efl_ui_image_efl_image_scale_type_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd EINA_UNUSED, Efl_Image_Scale_Type scale_type)
{
if (scale_type == sd->scale_type) return;
_efl_ui_image_internal_sizing_eval(obj, sd);
}
-EOLIAN static Efl_Ui_Image_Scale_Type
-_efl_ui_image_scale_type_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd)
+EOLIAN static Efl_Image_Scale_Type
+_efl_ui_image_efl_image_scale_type_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd)
{
return sd->scale_type;
}
if (sd->aspect_fixed)
{
- if (sd->fill_inside) sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE;
- else sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
+ if (sd->fill_inside) sd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_INSIDE;
+ else sd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
}
else
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FILL;
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_FILL;
_efl_ui_image_internal_sizing_eval(obj, sd);
}
if (sd->aspect_fixed)
{
- if (sd->fill_inside) sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_INSIDE;
- else sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
+ if (sd->fill_inside) sd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_INSIDE;
+ else sd->scale_type = EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE;
}
else
- sd->scale_type = EFL_UI_IMAGE_SCALE_TYPE_FILL;
+ sd->scale_type = EFL_IMAGE_SCALE_TYPE_FILL;
_efl_ui_image_sizing_eval(obj);
}
-enum Efl.Ui.Image.Scale_Type
-{
- [[Enumeration that defines scale types for the object's internal image.
-
- @since 1.18
- ]]
- fill, [[Scale the internal image so that it matches
- the object's area exactly.
- The image's aspect ratio might be changed.]]
- fit_inside, [[Scale the internal image
- so that it fits inside the object's area
- while maintaining the aspect ratio.
- At least one of the dimensions of the image
- should be equal to the corresponding dimension
- of the object.]]
- fit_outside, [[Scale the internal image
- so that it covers the entire object area
- while maintaining the aspect ratio.
- At least one of the dimensions of the image
- should be equal to the corresponding
- dimension of the object.]]
- tile, [[Tile image at its original size.]]
- none [[Not scale the internal image]]
-}
-
struct Efl.Ui.Image.Progress
{
[[
[[ Efl UI image class]]
event_prefix: efl_ui_image;
methods {
- @property scale_type {
- [[Control how the internal image is scaled.
-
- @since 1.18]]
- values {
- scale_type: Efl.Ui.Image.Scale_Type; [[Image scale type]]
- }
- }
@property scalable {
[[Enable or disable scaling up or down the internal image.
Efl.Image.image_size { get; }
Efl.Image.Load.load_size { get; set; }
Efl.Image.smooth_scale { get; set; }
+ Efl.Image.scale_type { get; set; }
Efl.Orientation.orientation { get; set; }
Efl.Flipable.flip { get; set; }
Efl.Player.playable { get; }
} async;
Efl_Ui_Image_Preload_Status preload_status;
- Efl_Ui_Image_Scale_Type scale_type;
+ Efl_Image_Scale_Type scale_type;
const char *stdicon;
Efl.File.file { get; set; }
//Efl.File.mmap { get; set; }
Efl.Gfx.color { set; get; }
- Efl.Ui.Image.scale_type { get; set; }
+ Efl.Image.scale_type { get; set; }
}
}
/* Legacy theme compatibility */
DBG("Detected legacy theme used for elm_bg. Swallowing object.");
sd->csd.need_bg_solid = EINA_FALSE;
- _elm_win_bg_set(sd, efl_add(EFL_UI_BG_CLASS, obj));
+ _elm_win_bg_set(sd, efl_add(EFL_UI_BG_WIDGET_CLASS, obj));
}
_elm_win_frame_style_update(sd, 0, 1);
if (file)
{
bg = efl_add(EFL_UI_IMAGE_CLASS, obj);
- efl_ui_image_scale_type_set(bg, EFL_UI_IMAGE_SCALE_TYPE_FIT_OUTSIDE);
+ efl_image_scale_type_set(bg, EFL_IMAGE_SCALE_TYPE_FIT_OUTSIDE);
ok = efl_file_set(bg, file, key);
if (!ok) ELM_SAFE_DEL(bg);
_elm_win_bg_set(sd, bg);
* @li @ref bg_03_example_page
*/
-#ifdef EFL_EO_API_SUPPORT
-#include "efl_ui_bg_eo.h"
-#endif
#ifndef EFL_NOLEGACY_API_SUPPORT
#include "elm_bg_legacy.h"
#endif
EAPI Evas_Object *elm_bg_precreated_object_get(void);
//
-#include "efl_ui_bg.eo.legacy.h"
+#include "efl_ui_bg_widget.eo.legacy.h"
if (!bg_obj)
{
- bg_obj = efl_add(EFL_UI_BG_CLASS, obj);
+ bg_obj = efl_add(EFL_UI_BG_WIDGET_CLASS, obj);
EINA_SAFETY_ON_NULL_RETURN_VAL(bg_obj, NULL);
sd->bg = bg_obj;
efl_canvas_group_member_add(obj, sd->bg);
}
EOLIAN static void
-_efl_ui_widget_part_bg_efl_ui_image_scale_type_set(Eo *obj, void *pd EINA_UNUSED, Efl_Ui_Image_Scale_Type scale_type)
+_efl_ui_widget_part_bg_efl_image_scale_type_set(Eo *obj, void *pd EINA_UNUSED, Efl_Image_Scale_Type scale_type)
{
Evas_Object *bg_obj = efl_ui_widget_part_bg_get(obj);
- efl_ui_image_scale_type_set(bg_obj, scale_type);
+ efl_image_scale_type_set(bg_obj, scale_type);
}
-EOLIAN static Efl_Ui_Image_Scale_Type
-_efl_ui_widget_part_bg_efl_ui_image_scale_type_get(Eo *obj, void *pd EINA_UNUSED)
+EOLIAN static Efl_Image_Scale_Type
+_efl_ui_widget_part_bg_efl_image_scale_type_get(Eo *obj, void *pd EINA_UNUSED)
{
Evas_Object *bg_obj = efl_ui_widget_part_bg_get(obj);
- return efl_ui_image_scale_type_get(bg_obj);
+ return efl_image_scale_type_get(bg_obj);
}
#include "efl_ui_widget_part_bg.eo.c"