Evas filters: Rename bind to source_set
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 5 Feb 2014 02:40:10 +0000 (11:40 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Fri, 7 Feb 2014 08:33:18 +0000 (17:33 +0900)
Because that's what we call it for proxy images :)

src/lib/evas/Evas_Eo.h
src/lib/evas/canvas/evas_object_text.c
src/lib/evas/filters/evas_filter.c
src/lib/evas/filters/evas_filter_parser.c
src/lib/evas/filters/evas_filter_private.h
src/lib/evas/include/evas_filter.h

index 0ef522e..69878f5 100644 (file)
@@ -1847,7 +1847,7 @@ enum
    EVAS_OBJ_TEXT_SUB_ID_ELLIPSIS_SET,
    EVAS_OBJ_TEXT_SUB_ID_ELLIPSIS_GET,
    EVAS_OBJ_TEXT_SUB_ID_FILTER_PROGRAM_SET,
-   EVAS_OBJ_TEXT_SUB_ID_FILTER_OBJECT_BIND,
+   EVAS_OBJ_TEXT_SUB_ID_FILTER_SOURCE_SET,
    EVAS_OBJ_TEXT_SUB_ID_LAST
 };
 
@@ -2281,11 +2281,17 @@ enum
 #define evas_obj_text_filter_program_set(str) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FILTER_PROGRAM_SET), EO_TYPECHECK(const char *, str)
 
 /**
- * @def evas_obj_text_filter_object_bind
- * @since 1.9
- * @note EXPERIMENTAL code
+ *
+ * Bind an object to use as a mask or texture in special filter
+ *
+ * @param[in]  name   Object name as used in the program code
+ * @param[in]  obj    Eo object to use through proxy rendering
+ *
+ * @see evas_obj_text_filter_program_set
+ *
+ * @note EXPERIMENTAL FEATURE.
  */
-#define evas_obj_text_filter_object_bind(str, prxy) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FILTER_OBJECT_BIND), EO_TYPECHECK(const char *, str), EO_TYPECHECK(Eo *, prxy)
+#define evas_obj_text_filter_source_set(name, obj) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FILTER_SOURCE_SET), EO_TYPECHECK(const char *, name), EO_TYPECHECK(Eo *, obj)
 
 /**
  * @}
index e6a9edb..a7bb4c6 100644 (file)
@@ -2227,11 +2227,10 @@ evas_object_text_render(Evas_Object *eo_obj EINA_UNUSED,
         evas_filter_run(filter);
         o->cur.filter.changed = EINA_FALSE;
 
-        INF("Effect rendering done. Return.");
+        DBG("Effect rendering done.");
         return;
      }
 
-
    /* End of the EXPERIMENTAL code */
 
 normal_render:
@@ -2703,7 +2702,7 @@ _filter_program_set(Eo *eo_obj, void *_pd, va_list *list)
    if (arg)
      {
         pgm = evas_filter_program_new("Evas_Text: Filter Program");
-        evas_filter_program_proxy_source_bind_all(pgm, o->cur.filter.sources);
+        evas_filter_program_source_set_all(pgm, o->cur.filter.sources);
         if (!evas_filter_program_parse(pgm, arg))
           {
              ERR("Parsing failed!");
@@ -2726,7 +2725,7 @@ _filter_program_set(Eo *eo_obj, void *_pd, va_list *list)
 }
 
 static void
-_filter_object_bind(Eo *eo_obj, void *_pd, va_list *list)
+_filter_source_set(Eo *eo_obj, void *_pd, va_list *list)
 {
    Evas_Object_Text *o = _pd;
    Evas_Object_Protected_Data *obj;
@@ -2749,7 +2748,7 @@ _filter_object_bind(Eo *eo_obj, void *_pd, va_list *list)
         return;
      }
 
-   evas_filter_program_proxy_source_bind(pgm, name, proxy);
+   evas_filter_program_source_set(pgm, name, proxy);
    o->cur.filter.changed = EINA_TRUE;
 
    // Update object
@@ -2806,7 +2805,7 @@ _class_constructor(Eo_Class *klass)
         EO_OP_FUNC(EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_ELLIPSIS_SET), _text_ellipsis_set),
         EO_OP_FUNC(EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_ELLIPSIS_GET), _text_ellipsis_get),
         EO_OP_FUNC(EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FILTER_PROGRAM_SET), _filter_program_set),
-        EO_OP_FUNC(EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FILTER_OBJECT_BIND), _filter_object_bind),
+        EO_OP_FUNC(EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FILTER_SOURCE_SET), _filter_source_set),
         EO_OP_FUNC_SENTINEL
    };
    eo_class_funcs_set(klass, func_desc);
@@ -2845,7 +2844,7 @@ static const Eo_Op_Description op_desc[] = {
      EO_OP_DESCRIPTION(EVAS_OBJ_TEXT_SUB_ID_ELLIPSIS_SET, "Gets the ellipsis of a text object."),
      EO_OP_DESCRIPTION(EVAS_OBJ_TEXT_SUB_ID_ELLIPSIS_GET, "Sets the ellipsis of a text object."),
      EO_OP_DESCRIPTION(EVAS_OBJ_TEXT_SUB_ID_FILTER_PROGRAM_SET, "Text special effects: Set the style program (string)."),
-     EO_OP_DESCRIPTION(EVAS_OBJ_TEXT_SUB_ID_FILTER_OBJECT_BIND, "Text special effects: Bind an Evas_Object to a name for proxy rendering."),
+     EO_OP_DESCRIPTION(EVAS_OBJ_TEXT_SUB_ID_FILTER_SOURCE_SET, "Text special effects: Bind an Evas_Object to a name for proxy rendering."),
      EO_OP_DESCRIPTION_SENTINEL
 };
 static const Eo_Class_Description class_desc = {
index 1d41f93..0811bd6 100644 (file)
@@ -122,7 +122,7 @@ _filter_buffer_backing_free(Evas_Filter_Buffer *fb)
 
 /** @hidden private bind proxy to context */
 void
-evas_filter_context_proxy_bind(Evas_Filter_Context *ctx, Evas_Object *eo_proxy,
+evas_filter_context_source_set(Evas_Filter_Context *ctx, Evas_Object *eo_proxy,
                                Evas_Object *eo_source, int bufid,
                                Eina_Stringshare *name)
 {
index 04298b3..5c99384 100644 (file)
@@ -1380,8 +1380,8 @@ evas_filter_program_new(const char *name)
 /** Bind an object for proxy rendering */
 
 void
-evas_filter_program_proxy_source_bind(Evas_Filter_Program *pgm,
-                                      const char *name, Evas_Object *object)
+evas_filter_program_source_set(Evas_Filter_Program *pgm,
+                               const char *name, Evas_Object *object)
 {
    Evas_Object *old;
 
@@ -1392,10 +1392,39 @@ evas_filter_program_proxy_source_bind(Evas_Filter_Program *pgm,
    eina_hash_add(pgm->proxies, name, object);
 }
 
+void
+evas_filter_program_source_set_all(Evas_Filter_Program *pgm,
+                                   Eina_Hash *proxies)
+{
+   Eina_Hash_Tuple *tuple;
+   Eina_Iterator *it;
+   Evas_Object *old;
+
+   if (!pgm || !proxies) return;
+
+   it = eina_hash_iterator_tuple_new(proxies);
+   EINA_ITERATOR_FOREACH(it, tuple)
+     {
+        Eina_Stringshare *name = tuple->key;
+        Eo *source = tuple->data;
+
+        old = eina_hash_find(pgm->proxies, name);
+        if (old)
+          {
+             INF("Buffer %s already exists, skipping proxy source.", name);
+             continue;
+          }
+
+        INF("Binding object %p as '%s'", source, name);
+        evas_filter_program_source_set(pgm, name, source);
+     }
+   eina_iterator_free(it);
+}
+
 /** Get object used for proxy rendering */
 
 Evas_Object *
-evas_filter_program_proxy_source_get(Evas_Filter_Program *pgm, const char *name)
+evas_filter_program_source_get(Evas_Filter_Program *pgm, const char *name)
 {
    return (Evas_Object *) eina_hash_find(pgm->proxies, name);
 }
@@ -1838,8 +1867,8 @@ evas_filter_context_program_use(Evas_Filter_Context *ctx, Evas_Object *eo_obj,
         buf->cid = evas_filter_buffer_empty_new(ctx, buf->alpha);
         if (buf->proxy)
           {
-             Eo *eo_source = evas_filter_program_proxy_source_get(pgm, buf->proxy);
-             evas_filter_context_proxy_bind(ctx, eo_obj, eo_source, buf->cid, buf->proxy);
+             Eo *eo_source = evas_filter_program_source_get(pgm, buf->proxy);
+             evas_filter_context_source_set(ctx, eo_obj, eo_source, buf->cid, buf->proxy);
           }
      }
 
index f6ecc56..b3c0539 100644 (file)
@@ -167,7 +167,7 @@ enum _Evas_Filter_Interpolation_Mode
 };
 
 void                     evas_filter_context_clear(Evas_Filter_Context *ctx);
-void                     evas_filter_context_proxy_bind(Evas_Filter_Context *ctx, Evas_Object *eo_proxy, Evas_Object *eo_source, int bufid, Eina_Stringshare *name);
+void                     evas_filter_context_source_set(Evas_Filter_Context *ctx, Evas_Object *eo_proxy, Evas_Object *eo_source, int bufid, Eina_Stringshare *name);
 
 /* FIXME: CPU filters entry points. Move these to the Evas Engine itself. */
 Evas_Filter_Apply_Func   evas_filter_blend_cpu_func_get(Evas_Filter_Command *cmd);
index 12d62c8..453cd53 100644 (file)
@@ -95,8 +95,9 @@ Eina_Bool                evas_filter_program_parse(Evas_Filter_Program *pgm, con
 void                     evas_filter_program_del(Evas_Filter_Program *pgm);
 Eina_Bool                evas_filter_context_program_use(Evas_Filter_Context *ctx, Evas_Object *eo_obj, Evas_Filter_Program *pgm);
 Eina_Bool                evas_filter_program_padding_get(Evas_Filter_Program *pgm, int *l, int *r, int *t, int *b);
-void                     evas_filter_program_proxy_source_bind(Evas_Filter_Program *pgm, const char *name, Evas_Object *object);
-Evas_Object             *evas_filter_program_proxy_source_get(Evas_Filter_Program *pgm, const char *name);
+void                     evas_filter_program_source_set(Evas_Filter_Program *pgm, const char *name, Evas_Object *object);
+void                     evas_filter_program_source_set_all(Evas_Filter_Program *pgm, Eina_Hash *sources);
+Evas_Object             *evas_filter_program_source_get(Evas_Filter_Program *pgm, const char *name);
 void                     evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj, Eina_Bool do_async);
 
 /* Filter context (low level) */