summaryrefslogtreecommitdiffstats
path: root/DOCS
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-03-06 18:20:11 +0100
committerwm4 <wm4@nowhere>2020-03-06 18:20:11 +0100
commit7a76b577d85ddc8f9e255b1a1c195ee88b76a7d8 (patch)
treecf51a99eae3a5356680480a72c6fb81dbb7d8d91 /DOCS
parentc6822b853d7475e8bf3b2c9f6823b7d74cf86950 (diff)
downloadmpv-7a76b577d85ddc8f9e255b1a1c195ee88b76a7d8.tar.bz2
mpv-7a76b577d85ddc8f9e255b1a1c195ee88b76a7d8.tar.xz
command: extend osd-overlay command with bounds reporting
This is more or less a minimal hack to make _some_ text measurement functionality available to scripts. Since libass does not support such a thing, this simply uses the bounding box of the rendered text. This is far from ideal. Problems include: - using a bitmap bounding box - additional memory waste and/or flushing caches - dependency on window size - odd small deviations with different window sizes (run osd-test.lua and resize the window after each timer update; the bounding boxes aren't adjusted in an overly useful way) - inability to query the size _after_ actual rendering But I guess it's a start. Since I'm aware that it's crap, add a threat to the manpage that this may be changed/removed again. For now, I'm interested whether anyone will have use for it in its current form, as it's an often requested feature.
Diffstat (limited to 'DOCS')
-rw-r--r--DOCS/man/input.rst25
-rw-r--r--DOCS/man/lua.rst1
2 files changed, 26 insertions, 0 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index a6f77dff0a..651ae7f645 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -1019,6 +1019,31 @@ Input Commands that are Possibly Subject to Change
It's possible that future mpv versions will randomly change how Z order
between different OSD formats and builtin OSD is handled.
+ ``hidden``
+ If set to ``yes``/true, do not display this (default: no).
+
+ ``compute_bounds``
+ If set to ``yes``/true, attempt to determine bounds and write them to
+ the command's result value as ``x0``, ``x1``, ``y0``, ``y1`` rectangle
+ (default: no). If the rectangle is empty, not known, or somehow
+ degenerate, it is not set. ``x1``/``y1`` is the coordinate of the bottom
+ exclusive corner of the rectangle.
+
+ The result value may depend on the VO window size, and is based on the
+ last known window size at the time of the call. This means the results
+ may be different from what is actually rendered.
+
+ For ``ass-events``, the result rectangle is recomputed to ``PlayRes``
+ coordinates (``res_x``/``res_y``). If window size is not known, a
+ fallback is chosen.
+
+ You should be aware that this mechanism is very inefficient, as it
+ renders the full result, and then uses the bounding box of the rendered
+ bitmap list (even if ``hidden`` is set). It will flush various caches.
+ Its results also depend on the used libass version.
+
+ This feature is experimental, and may change in some way again.
+
Note: always use named arguments (``mpv_command_node()``). Scripts should
use the ``mp.create_osd_overlay()`` helper instead of invoking this command
directly.
diff --git a/DOCS/man/lua.rst b/DOCS/man/lua.rst
index a9fc02ed44..92debe8a75 100644
--- a/DOCS/man/lua.rst
+++ b/DOCS/man/lua.rst
@@ -599,6 +599,7 @@ are useful only in special situations.
``update()``
Commit the OSD overlay to the screen, or in other words, run the
``osd-overlay`` command with the current fields of the overlay table.
+ Returns the result of the ``osd-overlay`` command itself.
``remove()``
Remove the overlay from the screen. A ``update()`` call will add it