* Here is a page with examples.
*
* @ref Example_Edje_Basics
+ * @ref tutorial_edje_swallow
*/
/**
* @include edje-basic.c
* @example edje-basic.c
*/
+
+/**
+ * @page tutorial_edje_swallow Swallow example
+ * @dontinclude edje-swallow.c
+ *
+ * This is a simple example in which we create a rect and swallow it.
+ *
+ * Focusing on the relevant parts of the code we go right to the creation of our
+ * rectangle. It should be noted that we don't resize or show our rect, that is
+ * because when an object is swallowed it's geometry and visibility is
+ * controlled by the theme:
+ * @skip 20
+ * @skipline evas_object_rectangle_add
+ * @until swallow
+ *
+ * The other bit of code that is relevant to us now is our check that the
+ * swallow worked:
+ * @until printf
+ *
+ * The full source code follows:
+ * @include edje-swallow.c
+ * @example edje-swallow.c
+ */
\ No newline at end of file
pkglibdir = $(datadir)/$(PACKAGE)/examples
#put here all EDCs one needs to the examples
-EDCS = basic.edc
+EDCS = basic.edc \
+ swallow.edc
filesdir = $(datadir)/$(PACKAGE)/examples
files_DATA =
#the ones using ecore_evas follow
AM_CPPFLAGS += @ECORE_EVAS_CFLAGS@
-pkglib_PROGRAMS += edje_basic
-edje_basic_DEPS = $(srcdir)/basic.edc
-edje_basic_SOURCES = edje-basic.c
-edje_basic_LDADD = $(top_builddir)/src/lib/libedje.la @ECORE_EVAS_LIBS@
+pkglib_PROGRAMS += \
+ edje-basic \
+ edje-swallow
-basic.edj: ${edje_basic_DEPS}
+LDADD = $(top_builddir)/src/lib/libedje.la @ECORE_EVAS_LIBS@
.edc.edj:
$(edje_cc) -v -id $(srcdir) $< $(builddir)/$(@F)
files_DATA += \
$(EDCS) \
- $(srcdir)/edje-basic.c
+ $(srcdir)/edje-basic.c \
+ $(srcdir)/edje-swallow.c
endif
EXTRA_DIST = $(EDCS) \
- $(srcdir)/edje-basic.c
\ No newline at end of file
+ $(srcdir)/edje-basic.c \
+ $(srcdir)/edje-swallow.c
\ No newline at end of file
--- /dev/null
+/**
+ * Simple Edje example illustrating swallow functions.
+ *
+ * You'll need at least one Evas engine built for it (excluding the
+ * buffer one). See stdout/stderr for output.
+ *
+ * @verbatim
+ * edje_cc swallow.edc && gcc -o edje-swallow edje-swallow.c `pkg-config --libs --cflags evas ecore ecore-evas edje`
+ * @endverbatim
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#else
+#define PACKAGE_EXAMPLES_DIR "."
+#define __UNUSED__
+#endif
+
+#include <Ecore.h>
+#include <Ecore_Evas.h>
+#include <Edje.h>
+
+#define WIDTH (300)
+#define HEIGHT (300)
+
+static const char *edje_file_path = PACKAGE_EXAMPLES_DIR "/swallow.edj";
+
+static Ecore_Evas *ee;
+static Evas_Object *bg;
+
+static void
+_on_destroy(Ecore_Evas *ee __UNUSED__)
+{
+ ecore_main_loop_quit();
+}
+
+/* here just to keep our example's window size and background image's
+ * size in synchrony */
+static void
+_canvas_resize_cb(Ecore_Evas *ee)
+{
+ int w, h;
+
+ ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
+ evas_object_resize(bg, w, h);
+}
+
+int
+main(void)
+{
+ Evas_Object *edje_obj, *rect, *obj;
+ Evas *evas;
+
+ ecore_evas_init();
+ edje_init();
+
+ /* this will give you a window with an Evas canvas under the first
+ * engine available */
+ ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL);
+
+ ecore_evas_callback_destroy_set(ee, _on_destroy);
+ ecore_evas_callback_resize_set(ee, _canvas_resize_cb);
+ ecore_evas_title_set(ee, "Edje Swallow Example");
+ ecore_evas_show(ee);
+
+ evas = ecore_evas_get(ee);
+
+ bg = evas_object_rectangle_add(evas);
+ evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */
+ evas_object_move(bg, 0, 0); /* at canvas' origin */
+ evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */
+ evas_object_show(bg);
+
+ edje_obj = edje_object_add(evas);
+
+ edje_object_file_set(edje_obj, edje_file_path, "example_group");
+ evas_object_move(edje_obj, 20, 20);
+ evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40);
+ evas_object_show(edje_obj);
+
+ rect = evas_object_rectangle_add(evas);
+ evas_object_color_set(rect, 255, 0, 0, 255);
+ edje_object_part_swallow(edje_obj, "part_one", rect);
+
+ obj = edje_object_part_swallow_get(edje_obj, "part_one");
+ if(obj == rect)
+ printf("Swallowing worked!\n");
+
+ ecore_main_loop_begin();
+
+ ecore_evas_free(ee);
+ ecore_evas_shutdown();
+ edje_shutdown();
+ return 0;
+}
part of Edje's API:
- @ref Example_Edje_Basics
+- @ref tutorial_edje_swallow
*/
EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data);
-
/**
* @brief Swallows an object into the edje.
*
* @param obj A valid Evas_Object handle
* @param obj_swallow The swallowed object
*
- * Causes the edje to regurgitate a previously swallowed object. :)
+ * Causes the edje to regurgitate a previously swallowed object. :)
+ *
+ * @note @p obj_swallow will be deleted.
*/
EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow);