How to maintain relative position of two surfaces?

Ucan, Emre (ADITG/SW1) eucan at de.adit-jv.com
Thu Sep 25 00:32:35 PDT 2014


Hi,

you can do it with weston-ivi-shell. IVI-Shell introduces layer concept to weston.

A layer is a group of surfaces which can be moved or resized together.

But IVI-Shell is just an interface and you have to implement your own APIs to use it.

Wayland-IVI-Extension is a set of readily implemented APIs which are using weston-ivi-shell.

Some example APIs:

ilm_layerSetPosition
“Sets the horizontal and vertical position of the layer. Relative position of layer’s surfaces would be maintained.”

ilm_layerSetDestinationRectangle
“Set the destination area on the display for a layer. The layer will be scaled and positioned to this rectangle
for rendering.”

ilm_layerSetVisibility
“Sets the visibility  for all surfaces of a layer”

ilm_layerSetVisibility
“Sets the opacity for all surfaces of a layer”

You can get more information from the website: http://projects.genivi.org/wayland-ivi-extension/home

If you are interested I can help you to install & use it.

Best regards

Emre Ucan
Software Group I (ADITG/SW1)

Tel. +49 5121 49 6937
From: wayland-devel [mailto:wayland-devel-bounces at lists.freedesktop.org] On Behalf Of Hongze Zhao
Sent: Donnerstag, 25. September 2014 03:49
To: Jasper St. Pierre
Cc: wayland mailing list
Subject: Re: How to maintain relative position of two surfaces?

I am not familiar with subsurfaces as I am new to weston. I will look at it and see how it works.

Thanks,
Hongze

On Wed, Sep 24, 2014 at 8:45 PM, Jasper St. Pierre <jstpierre at mecheye.net<mailto:jstpierre at mecheye.net>> wrote:
This sounds like you want to use subsurfaces, then.

Any reason you can't just draw the child surface on top of the father surface, though?

On Wed, Sep 24, 2014 at 6:16 PM, Hongze Zhao <zhaohongze at gmail.com<mailto:zhaohongze at gmail.com>> wrote:
Hi Jasper,

Thanks for reply.

Here is my use case.
 [cid:image001.png at 01CFD8A0.CF723890]
Suppose we have a client called "father", who has a larger surface called "father surface" and a client called "child", whose smaller surface is "child surface". The child surface should be displayed in a given relative position above father surface and maintain their relative position. When I move father surface, the child surface will be moved together. But the child surface cannot be moved. Thus the child surface will looks like a part of father surface. I just need it works in the simplest scenario. I assume the two surfaces is in the same workspace, both surfaces cannot be resized, maximized or fullscreened. The two clients and compositor should work together to achieve this goal.

I know this is a weird use case. I am just wondering if there is some natural or easy way to implement this functionality. Or I have to do a lot of modifications.

Thanks,
Hongze


On Wed, Sep 24, 2014 at 7:54 PM, Jasper St. Pierre <jstpierre at mecheye.net<mailto:jstpierre at mecheye.net>> wrote:
The only way to position surfaces relatively one to another is by using a subsurface. But I imagine this isn't exactly what you want.
Can you explain a bit more about your use case? What happens if I put one surface on a different workspace from the others? Should the two be stacked independently (e.g. your window A, my terminal, your window B)? What happens when I resize the surfaces? Or maximize or fullscreen them?

On Wed, Sep 24, 2014 at 5:49 PM, Hongze Zhao <zhaohongze at gmail.com<mailto:zhaohongze at gmail.com>> wrote:
Hi All,

I am doing some experiments on weston compositor. I am wondering if someone could give me some hints about how to maintain relative position of two surfaces.

Suppose I have two wayland clients. After I grab and move the surface of one client, I would like to maintain the relative positions of the the surfaces from two clients. Thus I have to automatically update the position of the other surface.

I feel that surface position is stored in an instance of weston_view, which is mainly maintained by desktop-shell. So I am not sure if there is some easy way to achieve my goal by modifying desktop-shell.

Thanks,
Hongze

_______________________________________________
wayland-devel mailing list
wayland-devel at lists.freedesktop.org<mailto:wayland-devel at lists.freedesktop.org>
http://lists.freedesktop.org/mailman/listinfo/wayland-devel



--
  Jasper



--
Hongze Zhao
Department of Computer Science
Duke University
Email: zhaohongze at gmail.com<mailto:zhaohongze at gmail.com>


--
  Jasper



--
Hongze Zhao
Department of Computer Science
Duke University
Email: zhaohongze at gmail.com<mailto:zhaohongze at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20140925/c2db515b/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 3046 bytes
Desc: image001.png
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20140925/c2db515b/attachment-0001.png>


More information about the wayland-devel mailing list