e_view_client: add e_view_client_external_view_image_set 01/323401/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 25 Apr 2025 01:58:25 +0000 (10:58 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 28 Apr 2025 06:28:31 +0000 (15:28 +0900)
This function sets the external view_image to e_view_client

Change-Id: I1949102f8084ee07e4e541198c484efec4995f9b

src/bin/core/e_view_client.c
src/include/e_view_client.h

index 001371b000b1ff873013b3756fc10b6d8374b26c..96c60af55499c526e6d362bd63bc1e5a865fa763 100644 (file)
@@ -24,6 +24,9 @@ static const E_View_Impl view_client_impl = {
 struct _E_View_Client
 {
    E_View view;
+   E_View_Image *external_view_image;
+   E_View *external_view;
+   E_View_Client_External_View_Type external_view_type;
    E_View *content;
    E_View *effect;
    struct wl_list mirror;
@@ -340,6 +343,26 @@ e_view_client_color_visible_get(E_View_Client *client)
    return e_comp_object_color_visible_get(client->view.eo);
 }
 
+E_API bool
+e_view_client_external_view_image_set(E_View_Client *client, E_View_Image *view_image)
+{
+   E_View *view;
+
+   if (client == NULL) return false;
+   if (view_image == NULL) return false;
+
+   view = e_view_image_view_get(view_image);
+   if (view->type != E_VIEW_TYPE_IMAGE) return false;
+
+   if (!e_comp_object_content_set(client->view.eo, view->eo, E_COMP_OBJECT_CONTENT_TYPE_EXT_IMAGE))
+      return false;
+
+   client->external_view_image = view_image;
+   client->external_view = e_view_image_view_get(view_image);
+   client->external_view_type = E_VIEW_CLIENT_EXTERNAL_VIEW_TYPE_IMAGE;
+
+   return true;
+}
 
 EINTERN E_View *
 e_view_client_content_get(E_View_Client *client)
index 086d54abe935b4c224b810086a0d2d91a46cb07a..5e75c41bcabf5ac9acde6009f7b075220e948bca 100644 (file)
@@ -6,6 +6,7 @@ extern "C" {
 #endif
 
 #include <e_view.h>
+#include <e_view_image.h>
 #include <e_comp_object.h>
 
 typedef enum
@@ -24,6 +25,7 @@ void e_view_client_alpha_set(E_View_Client *client, bool alpha);
 void e_view_client_color_get(E_View_Client *client, int *r, int *g, int *b, int *a);
 bool e_view_client_content_set(E_View_Client *client, E_View *content, E_Comp_Object_Content_Type type);
 E_Comp_Object_Content_Type e_view_client_content_type_get(E_View_Client *client);
+bool e_view_client_external_view_image_set(E_View_Client *client, E_View_Image *view_image);
 void e_view_client_damage(E_View_Client *client, int x, int y, int width, int height);
 void e_view_client_dirty(E_View_Client *client);
 E_View *e_view_client_effect_object_get(E_View_Client *client);