[1]https://phab.enlightenment.org/D1811

   [2]https://phab.enlightenment.org/D1956

   Do you really see here broken  indentation?


   ------- Original Message -------

   Sender : Tom Hacohen<tom.haco...@samsung.com> Senior Engineer/SRUK-Open
   Source/Samsung Electronics

   Date : Feb 23, 2015 18:52 (GMT+03:00)

   Title  : Re: [E-devel] [EGIT] [core/efl] master 25/27: evas: Evas_3D -
   mechanism for finding node by color pick.


   CODING CONVENTIONS AND COMMIT GUIDELINES!!!
   Commit message should be:
   evas 3d: mechanism...
   Lines are too long.
   Indentation is completely broken for this patch.
   Please start rejecting patches.
   --
   Tom.
   On 11/02/15 17:50, Oleksandr Shcherbina wrote:
   > cedric pushed a commit to branch master.
   >
   >
   http://git.enlightenment.org/core/efl.git/commit/?id=dc0b144cf09deba3a5a6fe7
   46f0130b67b5bf64b
   >
   > commit dc0b144cf09deba3a5a6fe746f0130b67b5bf64b
   > Author: Oleksandr Shcherbina
   > Date:   Wed Feb 11 17:44:42 2015 +0100
   >
   >      evas: Evas_3D - mechanism for finding node by color pick.
   >
   >      Summary:
   >      See first part https://phab.enlightenment.org/D1811 (backend, gl)
   >
   >      Add get/set for color pick mode at evas_3d_mesh and evas_3d_scene
   >      Add evas_3d_node_color_node_mesh_collect function to collect data at
   force rendering
   >      Add state flag for scene to avoid useless force rendering in case
   scene wasn't changed
   >      Add functionality for color pick in evas_3d_scene_pick method
   >
   >      Reviewers: Hermet, raster, cedric
   >
   >      Reviewed By: cedric
   >
   >      Subscribers: cedric
   >
   >      Differential Revision: https://phab.enlightenment.org/D1956
   >
   >      Signed-off-by: Cedric BAIL
   > ---
   >   src/lib/evas/Evas_Eo.h               |   1 +
   >   src/lib/evas/canvas/evas_3d_mesh.c   |  17 ++++++
   >   src/lib/evas/canvas/evas_3d_mesh.eo  |  21 +++++++
   >   src/lib/evas/canvas/evas_3d_node.c   |  71 +++++++++++++++++++++++
   >               src/lib/evas/canvas/evas_3d_scene.c  |             109
   +++++++++++++++++++++++++++++++++--
   >   src/lib/evas/canvas/evas_3d_scene.eo |  21 +++++++
   >   src/lib/evas/include/evas_private.h  |   8 ++-
   >   7 files changed, 242 insertions(+), 6 deletions(-)
   >
   > diff --git a/src/lib/evas/Evas_Eo.h b/src/lib/evas/Evas_Eo.h
   > index 8fa89b3..033ada2 100644
   > --- a/src/lib/evas/Evas_Eo.h
   > +++ b/src/lib/evas/Evas_Eo.h
   > @@ -468,6 +468,7 @@ typedef enum _Evas_3D_State
   >      EVAS_3D_STATE_SCENE_BACKGROUND_COLOR,
   >      EVAS_3D_STATE_SCENE_SIZE,
   >      EVAS_3D_STATE_SCENE_SHADOWS_ENABLED,
   > +   EVAS_3D_STATE_SCENE_UPDATED,
   >
   >      EVAS_3D_STATE_TEXTURE_DATA = 1,
   >      EVAS_3D_STATE_TEXTURE_WRAP,
   >        diff        --git        a/src/lib/evas/canvas/evas_3d_mesh.c
   b/src/lib/evas/canvas/evas_3d_mesh.c
   > index ddbf619..44304380 100644
   > --- a/src/lib/evas/canvas/evas_3d_mesh.c
   > +++ b/src/lib/evas/canvas/evas_3d_mesh.c
   > @@ -120,6 +120,9 @@ _mesh_init(Evas_3D_Mesh_Data *pd)
   >      pd->blend_sfactor = EVAS_3D_BLEND_ONE;
   >      pd->blend_dfactor = EVAS_3D_BLEND_ZERO;
   >      pd->blending = EINA_FALSE;
   > +
   > +   pd->color_pick_key = -1.0;
   > +   pd->color_pick_enabled = EINA_FALSE;
   >   }
   >
   >   static inline void
   > @@ -963,4 +966,18 @@
   evas_3d_mesh_interpolate_vertex_buffer_get(Evas_3D_Mesh *mesh, int frame,
   >        }
   >   }
   >
   > +EOLIAN static Eina_Bool
   >     +_evas_3d_mesh_color_pick_enable_get(Eo     *obj    EINA_UNUSED,
   Evas_3D_Mesh_Data *pd)
   > +{
   > +   return pd->color_pick_enabled;
   > +}
   > +EOLIAN static Eina_Bool
   > +_evas_3d_mesh_color_pick_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd,
   Eina_Bool _enabled)
   > +{
   > +   if (pd->color_pick_enabled != _enabled)
   > +     pd->color_pick_enabled = _enabled;
   >  +   eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_COLOR_PICK,
   NULL));
   > +   return EINA_TRUE;
   > +}
   > +
   >   #include "canvas/evas_3d_mesh.eo.c"
   >        diff        --git       a/src/lib/evas/canvas/evas_3d_mesh.eo
   b/src/lib/evas/canvas/evas_3d_mesh.eo
   > index 5657b32..a23654a 100644
   > --- a/src/lib/evas/canvas/evas_3d_mesh.eo
   > +++ b/src/lib/evas/canvas/evas_3d_mesh.eo
   >   @@   -352,6   +352,27   @@   class  Evas_3D_Mesh  (Evas_3D_Object,
   Evas.Common_Interface, Efl.File)
   >            params {
   >            }
   >         }
   > +      color_pick_enable_get @const {
   > +         /*
   > +           Get status of color picking of the mesh.
   > +
   > +           @ingroup Evas_3D_Mesh
   > +          */
   > +         return: bool;
   > +         params {
   > +         }
   > +      }
   > +      color_pick_enable_set {
   > +         /*
   > +           Set posibility color picking.
   > +
   > +           @ingroup Evas_3D_Mesh
   > +          */
   > +         return: bool;
   > +         params {
   > +            @in bool _enabled;  /*@ Posibility flag */
   > +         }
   > +      }
   >      }
   >      properties {
   >         shade_mode {
   >        diff        --git        a/src/lib/evas/canvas/evas_3d_node.c
   b/src/lib/evas/canvas/evas_3d_node.c
   > index a5355ed..62e2c1c 100644
   > --- a/src/lib/evas/canvas/evas_3d_node.c
   > +++ b/src/lib/evas/canvas/evas_3d_node.c
   > @@ -6,6 +6,27 @@
   >
   >   Evas_3D_Mesh_Frame *evas_3d_mesh_frame_find(Evas_3D_Mesh_Data *pd, int
   frame);
   >
   > +static Eina_Stringshare *
   >  +_generate_unic_color_key(Evas_Color  *color, Evas_Color *bg_color,
   Evas_3D_Node *node, Evas_3D_Mesh *mesh,
   > +                         Eina_Bool init)
   > +{
   > +   static unsigned short red = USHRT_MAX;
   > +
   > +   if (init) red = USHRT_MAX;
   > +
   > +   if (fabs(bg_color->r - (double)red) <= DBL_EPSILON) red--;
   > +
   > +   color->r = (double)red / USHRT_MAX;
   > +   color->g = 0.0;
   > +   color->b = 0.0;
   > +
   > +   red--;
   > +
   > +   if (red < 1) red = USHRT_MAX;
   > +
   > +   return eina_stringshare_printf("%p %p", node, mesh);
   > +}
   > +
   >   static inline Evas_3D_Node_Mesh *
   >   _node_mesh_new(Evas_3D_Node *node, Evas_3D_Mesh *mesh)
   >   {
   > @@ -795,6 +816,56 @@ evas_3d_node_mesh_collect(Evas_3D_Node *node, void
   *data)
   >   }
   >
   >   Eina_Bool
   > +evas_3d_node_color_node_mesh_collect(Evas_3D_Node *node, void *data)
   > +{
   > +   Evas_3D_Scene_Public_Data *scene_data = (Evas_3D_Scene_Public_Data
   *)data;
   > +   Evas_3D_Node_Data *pd = eo_data_scope_get(node, MY_CLASS);
   > +   Evas_3D_Node_Data *pd_camera =
   eo_data_scope_get(scene_data->camera_node, MY_CLASS);
   > +   Evas_3D_Camera *camera =
   (Evas_3D_Camera*)pd_camera->data.camera.camera;
   > +
   > +   Eina_List *list_meshes, *l;
   > +   Evas_3D_Mesh *mesh;
   > +   Eina_Stringshare *key, *datakey;
   > +   Evas_Color *color;
   > +   Eina_Bool visible = EINA_FALSE;
   > +   Eina_Array *arr;
   > +   if (pd->type == EVAS_3D_NODE_TYPE_MESH)
   > +     {
   > +        eo_do(camera,
   > +              visible =
   evas_3d_camera_node_visible_get(scene_data->camera_node,
   >       +                                                        node,
   EVAS_3D_FRUSTUM_MODE_BSPHERE));
   > +        if (visible)
   > +          {
   >    +                eo_do    (node,    list_meshes    =   (Eina_List
   *)evas_3d_node_mesh_list_get());
   > +             EINA_LIST_FOREACH(list_meshes, l, mesh)
   > +               {
   > +                 if (eo_do(mesh, evas_3d_mesh_color_pick_enable_get()))
   > +                   {
   > +                      color = calloc(1, sizeof(Evas_Color));
   > +
   > +                      if
   (!eina_hash_population(scene_data->node_mesh_colors))
   >   +                        key   =   _generate_unic_color_key(color,
   &scene_data->bg_color,
   >  +                                                       node, mesh,
   EINA_TRUE);
   > +                      else
   >   +                        key   =   _generate_unic_color_key(color,
   &scene_data->bg_color,
   >  +                                                       node, mesh,
   EINA_FALSE);
   > +
   > +                      datakey = eina_stringshare_printf("%f %f %f",
   color->r, color->g, color->b);
   > +                      eina_hash_add(scene_data->node_mesh_colors, key,
   color);
   > +                      arr = eina_array_new(2);
   > +                      eina_array_push(arr, (void *)node);
   > +                      eina_array_push(arr, (void *)mesh);
   >   +                      eina_hash_add(scene_data->colors_node_mesh,
   datakey, arr);
   > +                   }
   > +               }
   > +           }
   > +        else
   > +          return EINA_FALSE;
   > +     }
   > +   return EINA_TRUE;
   > +}
   > +
   > +Eina_Bool
   >   evas_3d_node_light_collect(Evas_3D_Node *node, void *data)
   >   {
   >      Evas_3D_Scene_Public_Data *scene_data = (Evas_3D_Scene_Public_Data
   *)data;
   >        diff        --git       a/src/lib/evas/canvas/evas_3d_scene.c
   b/src/lib/evas/canvas/evas_3d_scene.c
   > index 0e177a7..a26b6c8 100644
   > --- a/src/lib/evas/canvas/evas_3d_scene.c
   > +++ b/src/lib/evas/canvas/evas_3d_scene.c
   > @@ -9,6 +9,8 @@ evas_3d_scene_data_init(Evas_3D_Scene_Public_Data *data)
   >      data->camera_node = NULL;
   >      data->light_nodes = NULL;
   >      data->mesh_nodes = NULL;
   > +   data->node_mesh_colors = NULL;
   > +   data->colors_node_mesh = NULL;
   >   }
   >
   >   void
   > @@ -46,6 +48,8 @@ _evas_3d_scene_evas_3d_object_update_notify(Eo *obj
   EINA_UNUSED, Evas_3D_Scene_D
   >        {
   >           eo_do(pd->camera_node, evas_3d_object_update());
   >        }
   > +
   > +   eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_UPDATED, NULL));
   >   }
   >
   >   EAPI Evas_3D_Scene *
   >   @@  -65,6  +69,9  @@  _evas_3d_scene_eo_base_constructor(Eo  *obj,
   Evas_3D_Scene_Data *pd)
   >      eo_do(obj, evas_3d_object_type_set(EVAS_3D_OBJECT_TYPE_SCENE));
   >      evas_color_set(&pd->bg_color, 0.0, 0.0, 0.0, 0.0);
   >      pd->shadows_enabled = EINA_FALSE;
   > +   pd->color_pick_enabled = EINA_FALSE;
   > +   pd->node_mesh_colors = NULL;
   > +   pd->colors_node_mesh = NULL;
   >   }
   >
   >   EOLIAN static void
   > @@ -608,17 +615,32 @@ _node_pick(Evas_3D_Node *node, void *data)
   >      return EINA_TRUE;
   >   }
   >
   > +static void _node_mesh_colors_free_cb(void *data)
   > +{
   > +   if (data) free(data);
   > +}
   > +
   >   EOLIAN static Eina_Bool
   >    _evas_3d_scene_pick(Eo *obj, Evas_3D_Scene_Data *pd, Evas_Real x,
   Evas_Real y,
   >                       Evas_3D_Node **node, Evas_3D_Mesh **mesh,
   >                       Evas_Real *s, Evas_Real *t)
   >   {
   > -   /* TODO: Use H/W picking if availabe. */
   >      Evas_3D_Pick_Data data;
   > +   Evas_3D_Node_Data *pd_camera_node;
   > +   Evas_3D_Camera_Data *pd_camera;
   > +   Evas_3D_Object_Data *pd_parent;
   > +   Evas_Public_Data *e;
   > +   int tex, px, py;;
   > +   double redcomponent;
   > +   Eina_Stringshare *tmp;
   > +   Eina_Array *arr = NULL;
   > +   Eina_Bool update_scene = EINA_FALSE;
   > +
   > +   pd_parent = eo_data_scope_get(obj, EVAS_3D_OBJECT_CLASS);
   > +   e = eo_data_scope_get(pd_parent->evas, EVAS_CANVAS_CLASS);
   >
   >      data.x      = ((x * 2.0) / (Evas_Real)pd->w) - 1.0;
   >      data.y      = (((pd->h - y - 1) * 2.0) / ((Evas_Real)pd->h)) - 1.0;
   > -
   >      data.picked = EINA_FALSE;
   >      data.z      = 1.0;
   >      data.node   = NULL;
   > @@ -626,17 +648,78 @@ _evas_3d_scene_pick(Eo *obj, Evas_3D_Scene_Data *pd,
   Evas_Real x, Evas_Real y,
   >      data.s      = 0.0;
   >      data.t      = 0.0;
   >
   > +   px = round(x * pd->w / e->viewport.w);
   > +   py = round((pd->h - (y * pd->h / e->viewport.h) - 1));
   > +
   > +   /*Use color pick mechanism finding node and mesh*/
   > +   if (pd->color_pick_enabled)
   > +     {
   > +        Evas_3D_Scene_Public_Data scene_data;
   > +
   > +        scene_data.bg_color = pd->bg_color;
   > +        scene_data.shadows_enabled = pd->shadows_enabled;
   > +        scene_data.camera_node = pd->camera_node;
   > +        scene_data.color_pick_enabled = pd->color_pick_enabled;
   > +        update_scene = eo_do(obj,
   evas_3d_object_dirty_get(EVAS_3D_STATE_SCENE_UPDATED));
   > +        if (update_scene)
   > +          {
   > +             if (pd->node_mesh_colors)
   > +               {
   > +                  eina_hash_free(pd->node_mesh_colors);
   > +                  eina_hash_free(pd->colors_node_mesh);
   > +                  pd->node_mesh_colors = NULL;
   > +                  pd->colors_node_mesh = NULL;
   > +               }
   > +             pd->node_mesh_colors =
   eina_hash_stringshared_new(_node_mesh_colors_free_cb);
   > +             pd->colors_node_mesh =
   eina_hash_stringshared_new(_node_mesh_colors_free_cb);
   > +          }
   > +        scene_data.node_mesh_colors = pd->node_mesh_colors;
   > +        scene_data.colors_node_mesh = pd->colors_node_mesh;
   > +        evas_3d_node_tree_traverse(pd->root_node,
   > +                                   EVAS_3D_TREE_TRAVERSE_LEVEL_ORDER,
   EINA_TRUE,
   >+                                 evas_3d_node_color_node_mesh_collect,
   &scene_data);
   > +
   > +        if (e->engine.func->drawable_scene_render_to_texture)
   > +          {
   > +             if
   (e->engine.func->drawable_scene_render_to_texture(e->engine.data.output,
   > +                                                         pd->surface,
   &scene_data))
   > +               {
   > +                  if (e->engine.func->drawable_texture_color_pick_id_get)
   > +                    tex =
   e->engine.func->drawable_texture_color_pick_id_get(pd->surface);
   > +                  if (e->engine.func->drawable_texture_pixel_color_get)
   > +                    {
   > +                       redcomponent =
   e->engine.func->drawable_texture_pixel_color_get(tex, px, py, pd->surface);
   >  +                        tmp  = eina_stringshare_printf("%f %f %f",
   redcomponent, 0.0, 0.0);
   > +                       arr = (Eina_Array
   *)eina_hash_find(pd->colors_node_mesh, tmp);
   > +                       if (arr)
   > +                         {
   >   +                            if   (mesh)   *mesh  =  (Evas_3D_Mesh
   *)eina_array_data_get(arr, 1);
   >   +                            if   (node)   *node  =  (Evas_3D_Node
   *)eina_array_data_get(arr, 0);
   > +                            eina_stringshare_del(tmp);
   > +
   > +                            return EINA_TRUE;
   > +                         }
   > +                       else
   > +                         {
   > +                            eina_stringshare_del(tmp);
   > +                            if (mesh) *mesh = NULL;
   > +                            if (node) *node = NULL;
   > +                         }
   > +                    }
   > +               }
   > +          }
   > +        return EINA_FALSE;
   > +     }
   >      /* Update the scene graph. */
   >      eo_do(obj, evas_3d_object_update());
   > -   Evas_3D_Node_Data *pd_camera_node = eo_data_scope_get(pd->camera_node,
   EVAS_3D_NODE_CLASS);
   > -   Evas_3D_Camera_Data *pd_camera =
   eo_data_scope_get(pd_camera_node->data.camera.camera, EVAS_3D_CAMERA_CLASS);
   >     +      pd_camera_node    =    eo_data_scope_get(pd->camera_node,
   EVAS_3D_NODE_CLASS);
   > +   pd_camera = eo_data_scope_get(pd_camera_node->data.camera.camera,
   EVAS_3D_CAMERA_CLASS);
   >      evas_mat4_multiply(&data.matrix_vp,
   >                         &pd_camera->projection,
   >                         &pd_camera_node->data.camera.matrix_world_to_eye);
   >
   >      evas_ray3_init(&data.ray_world, data.x, data.y, &data.matrix_vp);
   >
   > -
   >      /* Traverse tree while adding meshes into pick data structure. */
   >      evas_3d_node_tree_traverse(pd->root_node,
   EVAS_3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_TRUE,
   >                                 _node_pick, &data);
   >  @@  -726,4  +809,20  @@  _evas_3d_scene_shadows_enable_set(Eo  *obj
   EINA_UNUSED, Evas_3D_Scene_Data *pd, E
   >      eo_do(obj,evas_3d_object_change(EVAS_3D_STATE_SCENE_SHADOWS_ENABLED,
   NULL));
   >   }
   >
   > +EOLIAN static Eina_Bool
   >     +_evas_3d_scene_color_pick_enable_get(Eo    *obj    EINA_UNUSED,
   Evas_3D_Scene_Data *pd)
   > +{
   > +   return pd->color_pick_enabled;
   > +}
   > +
   > +EOLIAN static Eina_Bool
   >     +_evas_3d_scene_color_pick_enable_set(Eo    *obj    EINA_UNUSED,
   Evas_3D_Scene_Data *pd, Eina_Bool _enabled)
   > +{
   > +   if (pd->color_pick_enabled != _enabled)
   > +     pd->color_pick_enabled = _enabled;
   > +
   > +   eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_UPDATED, NULL));
   > +   return EINA_TRUE;
   > +}
   > +
   >   #include "canvas/evas_3d_scene.eo.c"
   >        diff       --git       a/src/lib/evas/canvas/evas_3d_scene.eo
   b/src/lib/evas/canvas/evas_3d_scene.eo
   > index 1078c02..bb25f90 100644
   > --- a/src/lib/evas/canvas/evas_3d_scene.eo
   > +++ b/src/lib/evas/canvas/evas_3d_scene.eo
   >   @@   -136,6   +136,27   @@  class  Evas_3D_Scene  (Evas_3D_Object,
   Evas.Common_Interface)
   >            params {
   >            }
   >         }
   > +      color_pick_enable_get @const {
   > +         /*
   > +           Get status of color picking of the scene.
   > +
   > +           @ingroup Evas_3D_Scene
   > +          */
   > +         return: bool;
   > +         params {
   > +         }
   > +      }
   > +      color_pick_enable_set {
   > +         /*
   > +           Set posibility color picking.
   > +
   > +           @ingroup Evas_3D_Scene
   > +          */
   > +         return: bool;
   > +         params {
   > +            @in bool color_pick;  /*@ Posibility flag */
   > +         }
   > +      }
   >      }
   >      properties {
   >
   >        diff        --git       a/src/lib/evas/include/evas_private.h
   b/src/lib/evas/include/evas_private.h
   > index c07cfa3..ceab19d 100644
   > --- a/src/lib/evas/include/evas_private.h
   > +++ b/src/lib/evas/include/evas_private.h
   > @@ -191,11 +191,15 @@ struct _Evas_3D_Scene
   >      Evas_3D_Node     *root_node;
   >      Evas_3D_Node     *camera_node;
   >      Evas_Color       bg_color;
   > +   Eina_Bool        shadows_enabled :1;
   > +   Eina_Bool        color_pick_enabled :1;
   >
   >      void             *surface;
   >      int               w, h;
   >      Eina_List        *images;
   > -   Eina_Bool        shadows_enabled :1;
   > +
   > +   Eina_Hash        *node_mesh_colors;
   > +   Eina_Hash        *colors_node_mesh;
   >   };
   >
   >   struct _Evas_3D_Node_Mesh
   > @@ -380,6 +384,7 @@ struct _Evas_3D_Scene_Public_Data
   >      Eina_List        *mesh_nodes;
   >      Eina_Bool        shadows_enabled :1;
   >      Eina_Bool        color_pick_enabled :1;
   > +
   >      Eina_Hash        *node_mesh_colors;
   >      Eina_Hash        *colors_node_mesh;
   >   };
   > @@ -1628,6 +1633,7 @@ void _canvas_smart_objects_calculate_count_get(Eo
   *e, void *_pd, va_list *list);
   >    void  evas_3d_node_traverse(Evas_3D_Node *from, Evas_3D_Node *to,
   Evas_3D_Node_Traverse_Type type, Eina_Bool skip, Evas_3D_Node_Func func,
   void *data);
   >        void      evas_3d_node_tree_traverse(Evas_3D_Node      *root,
   Evas_3D_Tree_Traverse_Type type, Eina_Bool skip, Evas_3D_Node_Func func,
   void *data);
   >   Eina_Bool evas_3d_node_mesh_collect(Evas_3D_Node *node, void *data);
   > +Eina_Bool evas_3d_node_color_node_mesh_collect(Evas_3D_Node *node, void
   *data);
   >   Eina_Bool evas_3d_node_light_collect(Evas_3D_Node *node, void *data);
   >   void evas_3d_node_scene_root_add(Evas_3D_Node *node, Evas_3D_Scene
   *scene);
   >   void evas_3d_node_scene_root_del(Evas_3D_Node *node, Evas_3D_Scene
   *scene);
   >
   *
   ----------------------------------------------------------------------------
   --
   Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
   from Actuate! Instantly Supercharge Your Business Reports and Dashboards
   with Interactivity, Sharing, Native Excel Exports, App Integration & more
   Get technology previously reserved for billion-dollar corporations, FREE
   http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
   _______________________________________________
   enlightenment-devel mailing list
   enlightenment-devel@lists.sourceforge.net
   https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


   With best regards,

   Oleksander Shcherbina

   SRK-Tizen Platform Lab

   Samsung Ukraine R&D Institute

   57 L'va Tolstogo Str., Kyiv 01032, Ukraine

   Mob.: +380 (66) 1297544

   o.shcherb...@samsung.com




   [cid:T9SZN3WZA6X7@namo.co.kr]

   [SeenTimeChecker?do=0966c73de79aa0464bb17ed4340b993d4757d1278ede9eff28d6023d
   ffbae032ba777c355c197185c465c2cf80a2b7ef9aba4bb3b2b5ca43ddd7e184e0604d958075
   b6b33f32d245be7a12499853ada082afa00ff4b36e9acf878f9a26ce15a0]

References

   1. https://phab.enlightenment.org/D1811
   2. https://phab.enlightenment.org/D1956
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to