prevent double-emission of PresentationInfo::Change when making mixer-view selection...
[ardour.git] / scripts / export_mp4chaps.lua
index b7ab23189c820787a9be2eabca6155d9e32cd786..a58e678874761d2341b0205ea347327306c9d562 100644 (file)
@@ -14,17 +14,17 @@ is not created.
 This is a bit more convenient than the export option, as one does not
 have to wait for the export.
 ]],
-        license = "GPLv2"
+       license = "GPLv2"
 }
 
 function factory (unused_params) return function ()
 
-        fr = Session:frame_rate()
+       fr = Session:frame_rate()
        chaps = {}
 
-        for l in Session:locations():list():iter() do
-                name = l:name()
-                if not l:is_mark() or string.find(name, "^xrun%d*$") then
+       for l in Session:locations():list():iter() do
+               name = l:name()
+               if not l:is_mark() or string.find(name, "^xrun%d*$") then
                        goto next end
 
                t = l:start()
@@ -37,7 +37,7 @@ function factory (unused_params) return function ()
                ms = math.floor(r*1000/fr)
                table.insert(chaps, string.format("%02d:%02d:%02d.%03d %s\n", h, m, s, ms, name))
                ::next::
-        end
+       end
 
        if next(chaps) == nil then
                goto out end
@@ -45,11 +45,34 @@ function factory (unused_params) return function ()
        table.insert(chaps, "00:00:00.000 Intro\n")
        table.sort(chaps)
 
-       file = io.open(string.format("%s/export/mp4chaps.txt", Session:path()), "w")
+       file = io.open(ARDOUR.LuaAPI.build_filename (Session:path(), "export", "mp4chaps.txt"), "w")
        for i, line in ipairs(chaps) do
                file:write(line)
        end
-        file:close()
+       file:close()
 
        ::out::
 end end
+
+function icon (params) return function (ctx, width, height, fg)
+       local mh = height - 3.5;
+       local m3 = width / 3;
+       local m6 = width / 6;
+
+       ctx:set_line_width (.5)
+       ctx:set_source_rgba (ARDOUR.LuaAPI.color_to_rgba (fg))
+
+       ctx:move_to (width / 2 - m6, 2)
+       ctx:rel_line_to (m3, 0)
+       ctx:rel_line_to (0, mh * 0.4)
+       ctx:rel_line_to (-m6, mh * 0.6)
+       ctx:rel_line_to (-m6, -mh * 0.6)
+       ctx:close_path ()
+       ctx:stroke ()
+
+       local txt = Cairo.PangoLayout (ctx, "ArdourMono ".. math.ceil(math.min (width, height) * .5) .. "px")
+       txt:set_text ("MP4")
+       local tw, th = txt:get_pixel_size ()
+       ctx:move_to (.5 * (width - tw), .5 * (height - th))
+       txt:show_in_cairo_context (ctx)
+end end