aboutsummaryrefslogtreecommitdiffstats
path: root/man3/LIBAXL_REQUEST_TRANSLATE_COORDINATES.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/LIBAXL_REQUEST_TRANSLATE_COORDINATES.3')
-rw-r--r--man3/LIBAXL_REQUEST_TRANSLATE_COORDINATES.3120
1 files changed, 120 insertions, 0 deletions
diff --git a/man3/LIBAXL_REQUEST_TRANSLATE_COORDINATES.3 b/man3/LIBAXL_REQUEST_TRANSLATE_COORDINATES.3
new file mode 100644
index 0000000..93b6ca2
--- /dev/null
+++ b/man3/LIBAXL_REQUEST_TRANSLATE_COORDINATES.3
@@ -0,0 +1,120 @@
+.TH LIBAXL_REQUEST_TRANSLATE_COORDINATES 3 libaxl
+.SH NAME
+LIBAXL_REQUEST_TRANSLATE_COORDINATES - Get coordinates relative to another window and hit child
+.SH SYNOPSIS
+.nf
+#include <libaxl.h>
+
+#define LIBAXL_REQUEST_TRANSLATE_COORDINATES 17
+struct libaxl_request_translate_coordinates {
+ uint8_t \fIopcode\fP;
+ uint8_t \fI__pad\fP;
+ uint16_t \fI_request_length\fP;
+ libaxl_window_t \fIsrc_window\fP;
+ libaxl_window_t \fIdest_window\fP;
+ int16_t \fIsrc_x\fP;
+ int16_t \fIsrc_y\fP;
+};
+.fi
+.SH DESCRIPTION
+The display server shall return the coordinates
+.RI ( src_x ", " src_y ),
+which are given as relative to top left corner
+of the window whose ID is specified in the
+.I src_window
+field, as relative to the top left corner
+of the window whose ID is specified in the
+.I dest_window
+field. That is, if the top left corner of
+the window
+.I src_window
+is
+.RI ( x1 ", " y1 )
+and the the top left corner of
+the window
+.I src_window
+is
+.RI ( x2 ", " y2 ),
+then then returned coordinate is
+.RI ( dest_x ", " dest_y ),
+where
+.I dest_x
+is
+.I src_x-x1+x2
+and
+.I dest_y
+is
+.IR src_y-y1+y2 .
+.PP
+The display server shall also return an
+immediate, mapped child window, of the window
+whose ID is specified in the
+.I dest_window
+field, in which the coordinate is contained,
+if there is any.
+\" TODO Is there a rule for which child?
+.PP
+The value of the
+.I opcode
+field shall be
+.I LIBAXL_REQUEST_TRANSLATE_COORDINATES
+to signify that the request is of the
+request described in this document.
+.PP
+Other fields are filled in automatically by the
+.BR libaxl_send_request (3)
+function.
+.SH ERRORS
+.TP
+.BR LIBAXL_ERROR_WINDOW (3)
+One of the specified window IDs does not exist.
+.SH REPLIES
+.nf
+struct libaxl_reply_translate_coordinates {
+ uint8_t \fI__one\fP;
+ libaxl_bool_t \fIsame_screen\fP;
+ uint16_t \fIsequence_number\fP;
+ uint32_t \fI_reply_length\fP;
+ libaxl_window_t \fIchild\fP;
+ int16_t \fIdest_x\fP;
+ int16_t \fIdest_y\fP;
+ uint8_t \fI__unused\fP[16];
+};
+.fi
+.PP
+The display server shall, unless it returns an
+error, return one
+.B "struct libaxl_reply_translate_coordinates"
+with the
+.I same_screen
+field set 1 if both windows in the request
+belong to the same screen, and if so also the
+.I dest_x
+and
+.I dest_y
+fields set to the resulting coordinates as
+described in the
+.B DESCRIPTION
+section and the
+.I child
+field set to an immediate, mapped child of the
+window whose ID is specified in the
+.I dest_window
+field in the request, in which the coordinate
+is contained, if there is any, or to
+.I LIBAXL_NONE
+otherwise; but if the windows are not in the same
+screen, the
+.IR same_screen ,
+.IR dest_x ,
+and
+.I dest y
+fields are set to 0, and the
+.I child
+field is set to
+.IR LIBAXL_NONE .
+\" TODO The value of the child field here is an assumption
+.SH SEE ALSO
+.BR libaxl_send_request (3),
+.BR libaxl_receive (3),
+.BR LIBAXL_REQUEST_INTERN_ATOM (3)