diff options
author | Jan Janssen <medhefgo@web.de> | 2019-10-25 11:30:56 +0200 |
---|---|---|
committer | wm4 <1387750+wm4@users.noreply.github.com> | 2019-10-28 17:16:02 +0100 |
commit | 00c9a6c237e445469df8daeb455669e80b756749 (patch) | |
tree | f419b250cd57dc8c326e639b5a0b26778619c439 /player/lua/osc.lua | |
parent | 69f7251f32dd5136d2d6fc7350ec8b7082ccf805 (diff) | |
download | mpv-00c9a6c237e445469df8daeb455669e80b756749.tar.bz2 mpv-00c9a6c237e445469df8daeb455669e80b756749.tar.xz |
osc: Unify bottom and topbar code
Among the pointless duplication the right timecode label was given some extra space that wasn't needed.
Fixes: #6904
Diffstat (limited to 'player/lua/osc.lua')
-rw-r--r-- | player/lua/osc.lua | 210 |
1 files changed, 31 insertions, 179 deletions
diff --git a/player/lua/osc.lua b/player/lua/osc.lua index 6297aeb3b8..2d9e7be5a0 100644 --- a/player/lua/osc.lua +++ b/player/lua/osc.lua @@ -1252,11 +1252,13 @@ layouts["slimbox"] = function () end -layouts["bottombar"] = function() +function bar_layout(direction) + local y_offset = (direction < 0) and osc_param.playresy or 0 + local osc_geo = { x = -2, - y = osc_param.playresy - 54 - user_opts.barmargin, - an = 7, + y = y_offset + direction * (54 + user_opts.barmargin), + an = (direction < 0) and 7 or 1, w = osc_param.playresx + 4, h = 56, } @@ -1271,12 +1273,12 @@ layouts["bottombar"] = function() if ((osc_param.display_aspect > 0) and (osc_param.playresx < minW)) then osc_param.playresy = minW / osc_param.display_aspect osc_param.playresx = osc_param.playresy * osc_param.display_aspect - osc_geo.y = osc_param.playresy - 54 - user_opts.barmargin + osc_geo.y = y_offset + direction * (54 + user_opts.barmargin) osc_geo.w = osc_param.playresx + 4 end - local line1 = osc_geo.y + 9 + padY - local line2 = osc_geo.y + 36 + padY + local line1 = osc_geo.y - direction * (9 + padY) + local line2 = osc_geo.y - direction * (36 + padY) osc_param.areas = {} @@ -1284,9 +1286,18 @@ layouts["bottombar"] = function() osc_geo.w, osc_geo.h)) local sh_area_y0, sh_area_y1 - sh_area_y0 = get_align(-1 + (2*user_opts.deadzonesize), - osc_geo.y - (osc_geo.h / 2), 0, 0) - sh_area_y1 = osc_param.playresy - user_opts.barmargin + if direction > 0 then + -- deadzone below OSC + sh_area_y0 = user_opts.barmargin + sh_area_y1 = (osc_geo.y + (osc_geo.h / 2)) + + get_align(1 - (2*user_opts.deadzonesize), + osc_param.playresy - (osc_geo.y + (osc_geo.h / 2)), 0, 0) + else + -- deadzone above OSC + sh_area_y0 = get_align(-1 + (2*user_opts.deadzonesize), + osc_geo.y - (osc_geo.h / 2), 0, 0) + sh_area_y1 = osc_param.playresy - user_opts.barmargin + end add_area("showhide", 0, sh_area_y0, osc_param.playresx, sh_area_y1) local lo, geo @@ -1413,7 +1424,7 @@ layouts["bottombar"] = function() lo = add_layout("seekbar") lo.geometry = geo - lo.style = osc_styles.timecodes + lo.style = osc_styles.timecodesBar lo.slider.border = 0 lo.slider.gap = 2 lo.slider.tooltip_style = osc_styles.timePosBar @@ -1421,178 +1432,19 @@ layouts["bottombar"] = function() lo.slider.stype = user_opts["seekbarstyle"] lo.slider.rtype = user_opts["seekrangestyle"] - osc_param.video_margins.b = osc_geo.h / osc_param.playresy -end - -layouts["topbar"] = function() - local osc_geo = { - x = -2, - y = 54 + user_opts.barmargin, - an = 1, - w = osc_param.playresx + 4, - h = 56, - } - - local padX = 9 - local padY = 3 - local buttonW = 27 - local tcW = (state.tc_ms) and 170 or 110 - local tsW = 90 - local minW = (buttonW + padX)*5 + (tcW + padX)*4 + (tsW + padX)*2 - - if ((osc_param.display_aspect > 0) and (osc_param.playresx < minW)) then - osc_param.playresy = minW / osc_param.display_aspect - osc_param.playresx = osc_param.playresy * osc_param.display_aspect - osc_geo.y = 54 + user_opts.barmargin - osc_geo.w = osc_param.playresx + 4 - end - - local line1 = osc_geo.y - 36 - padY - local line2 = osc_geo.y - 9 - padY - - osc_param.areas = {} - - add_area("input", get_hitbox_coords(osc_geo.x, osc_geo.y, osc_geo.an, - osc_geo.w, osc_geo.h)) - - local sh_area_y0, sh_area_y1 - sh_area_y0 = user_opts.barmargin - sh_area_y1 = (osc_geo.y + (osc_geo.h / 2)) + - get_align(1 - (2*user_opts.deadzonesize), - osc_param.playresy - (osc_geo.y + (osc_geo.h / 2)), 0, 0) - add_area("showhide", 0, sh_area_y0, osc_param.playresx, sh_area_y1) - - local lo, geo - - -- Background bar - new_element("bgbox", "box") - lo = add_layout("bgbox") - - lo.geometry = osc_geo - lo.layer = 10 - lo.style = osc_styles.box - lo.alpha[1] = user_opts.boxalpha - - - -- Playback control buttons - geo = { x = osc_geo.x + padX, y = line1, an = 4, - w = buttonW, h = 36 - padY*2 } - lo = add_layout("playpause") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - geo = { x = geo.x + geo.w + padX, y = geo.y, an = geo.an, w = geo.w, h = geo.h } - lo = add_layout("ch_prev") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - geo = { x = geo.x + geo.w + padX, y = geo.y, an = geo.an, w = geo.w, h = geo.h } - lo = add_layout("ch_next") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - - -- Left timecode - geo = { x = geo.x + geo.w + padX + tcW, y = geo.y, an = 6, - w = tcW, h = geo.h } - lo = add_layout("tc_left") - lo.geometry = geo - lo.style = osc_styles.timecodesBar - - local sb_l = geo.x + padX - - -- Fullscreen button - geo = { x = osc_geo.x + osc_geo.w - buttonW - padX, y = geo.y, an = 4, - w = buttonW, h = geo.h } - lo = add_layout("tog_fs") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - -- Volume - geo = { x = geo.x - geo.w - padX, y = geo.y, an = geo.an, w = geo.w, h = geo.h } - lo = add_layout("volume") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - -- Track selection buttons - geo = { x = geo.x - tsW - padX, y = geo.y, an = geo.an, w = tsW, h = geo.h } - lo = add_layout("cy_sub") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - geo = { x = geo.x - geo.w - padX, y = geo.y, an = geo.an, w = geo.w, h = geo.h } - lo = add_layout("cy_audio") - lo.geometry = geo - lo.style = osc_styles.smallButtonsBar - - - -- Right timecode - geo = { x = geo.x - geo.w - padX - tcW - 10, y = geo.y, an = 4, - w = tcW, h = geo.h } - lo = add_layout("tc_right") - lo.geometry = geo - lo.style = osc_styles.timecodesBar - - local sb_r = geo.x - padX - - - -- Seekbar - geo = { x = sb_l, y = user_opts.barmargin, an = 7, - w = math.max(0, sb_r - sb_l), h = geo.h } - new_element("bgbar1", "box") - lo = add_layout("bgbar1") - - lo.geometry = geo - lo.layer = 15 - lo.style = osc_styles.timecodesBar - lo.alpha[1] = - math.min(255, user_opts.boxalpha + (255 - user_opts.boxalpha)*0.8) - if not (user_opts["seekbarstyle"] == "bar") then - lo.box.radius = geo.h / 2 - lo.box.hexagon = user_opts["seekbarstyle"] == "diamond" + if direction < 0 then + osc_param.video_margins.b = osc_geo.h / osc_param.playresy + else + osc_param.video_margins.t = osc_geo.h / osc_param.playresy end +end - lo = add_layout("seekbar") - lo.geometry = geo - lo.style = osc_styles.timecodesBar - lo.slider.border = 0 - lo.slider.gap = 2 - lo.slider.tooltip_style = osc_styles.timePosBar - lo.slider.stype = user_opts["seekbarstyle"] - lo.slider.rtype = user_opts["seekrangestyle"] - lo.slider.tooltip_an = 5 - - - -- Playlist prev/next - geo = { x = osc_geo.x + padX, y = line2, an = 4, w = 18, h = 18 - padY } - lo = add_layout("pl_prev") - lo.geometry = geo - lo.style = osc_styles.topButtonsBar - - geo = { x = geo.x + geo.w + padX, y = geo.y, an = geo.an, w = geo.w, h = geo.h } - lo = add_layout("pl_next") - lo.geometry = geo - lo.style = osc_styles.topButtonsBar - - local t_l = geo.x + geo.w + padX - - -- Cache - geo = { x = osc_geo.x + osc_geo.w - padX, y = geo.y, - an = 6, w = 150, h = geo.h } - lo = add_layout("cache") - lo.geometry = geo - lo.style = osc_styles.vidtitleBar - - local t_r = geo.x - geo.w - padX*2 +layouts["bottombar"] = function() + bar_layout(-1) +end - -- Title - geo = { x = t_l, y = geo.y, an = 4, - w = t_r - t_l, h = geo.h } - lo = add_layout("title") - lo.geometry = geo - lo.style = string.format("%s{\\clip(%f,%f,%f,%f)}", - osc_styles.vidtitleBar, - geo.x, geo.y-geo.h, geo.w, geo.y+geo.h) +layouts["topbar"] = function() + bar_layout(1) end -- Validate string type user options |