[vlc-devel] commit: libvlc_video_get_cursor: get the current mouse video coordinates ( Rémi Denis-Courmont )

git version control git at videolan.org
Thu Feb 11 17:27:32 CET 2010


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Feb 11 18:26:54 2010 +0200| [e22624799da7c67a3cfa6ab366927d2ddc985a01] | committer: Rémi Denis-Courmont 

libvlc_video_get_cursor: get the current mouse video coordinates

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e22624799da7c67a3cfa6ab366927d2ddc985a01
---

 include/vlc/libvlc_media_player.h |   26 ++++++++++++++++++++++++++
 src/control/video.c               |   13 +++++++++++++
 src/libvlc.sym                    |    1 +
 3 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/include/vlc/libvlc_media_player.h b/include/vlc/libvlc_media_player.h
index d8c930b..029ddb1 100644
--- a/include/vlc/libvlc_media_player.h
+++ b/include/vlc/libvlc_media_player.h
@@ -589,6 +589,32 @@ 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,
+ * <b>not</b> 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 e9f8ed7..db90825 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 d0a21c4..15965ef 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




More information about the vlc-devel mailing list