From: RĂ©mi Denis-Courmont Date: Thu, 11 Feb 2010 16:26:54 +0000 (+0200) Subject: libvlc_video_get_cursor: get the current mouse video coordinates X-Git-Tag: 1.1.0-ff~167 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e22624799da7c67a3cfa6ab366927d2ddc985a01;p=vlc libvlc_video_get_cursor: get the current mouse video coordinates --- 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