From e22624799da7c67a3cfa6ab366927d2ddc985a01 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 11 Feb 2010 18:26:54 +0200 Subject: [PATCH] libvlc_video_get_cursor: get the current mouse video coordinates --- include/vlc/libvlc_media_player.h | 26 ++++++++++++++++++++++++++ src/control/video.c | 13 +++++++++++++ src/libvlc.sym | 1 + 3 files changed, 40 insertions(+) diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h index d8c930b940..029ddb17f1 100644 --- a/include/vlc/libvlc_media_player.h +++ b/include/vlc/libvlc_media_player.h @@ -588,6 +588,32 @@ int libvlc_video_get_height( libvlc_media_player_t *p_mi ); VLC_DEPRECATED_API int libvlc_video_get_width( libvlc_media_player_t *p_mi ); +/** + * Get the mouse pointer coordinates over a video. + * Coordinates are expressed in terms of the decoded video resolution, + * not in terms of pixels on the screen/viewport (to get the latter, + * you can query your windowing system directly). + * + * Either of the coordinates may be negative or larger than the corresponding + * dimension of the video, if the cursor is outside the rendering area. + * + * @warning The coordinates may be out-of-date if the pointer is not located + * on the video rendering area. LibVLC does not track the pointer if it is + * outside of the video widget. + * + * @note LibVLC does not support multiple pointers (it does of course support + * multiple input devices sharing the same pointer) at the moment. + * + * \param p_mi media player + * \param num number of the video (starting from, and most commonly 0) + * \param px pointer to get the abscissa [OUT] + * \param py pointer to get the ordinate [OUT] + * \return 0 on success, -1 if the specified video does not exist + */ +VLC_PUBLIC_API +int libvlc_video_get_cursor( libvlc_media_player_t *p_mi, unsigned num, + int *px, int *py ); + /** * Get the current video scaling factor. * See also libvlc_video_set_scale(). diff --git a/src/control/video.c b/src/control/video.c index e9f8ed728c..db90825c92 100644 --- a/src/control/video.c +++ b/src/control/video.c @@ -186,6 +186,19 @@ int libvlc_video_get_width( libvlc_media_player_t *p_mi ) return width; } +int libvlc_video_get_cursor( libvlc_media_player_t *mp, unsigned num, + int *px, int *py ) +{ + vout_thread_t *p_vout = GetVout (mp, num); + if (p_vout == NULL) + return -1; + + *px = var_GetInteger (p_vout, "mouse-x"); + *py = var_GetInteger (p_vout, "mouse-y"); + vlc_object_release (p_vout); + return 0; +} + unsigned libvlc_media_player_has_vout( libvlc_media_player_t *p_mi ) { size_t n; diff --git a/src/libvlc.sym b/src/libvlc.sym index d0a21c4252..15965ef09f 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -165,6 +165,7 @@ libvlc_video_get_chapter_description libvlc_video_get_crop_geometry libvlc_video_get_size libvlc_video_get_height +libvlc_video_get_cursor libvlc_video_get_logo_int libvlc_video_get_marquee_int libvlc_video_get_marquee_string -- 2.39.5