home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / vlc-1.1.2-win32.exe / lua / intf / modules / common.lua next >
Encoding:
Text File  |  2010-07-30  |  2.7 KB  |  106 lines

  1. --[[ This code is public domain (since it really isn't very interesting) ]]--
  2.  
  3. module("common",package.seeall)
  4.  
  5. -- Iterate over a table in the keys' alphabetical order
  6. function pairs_sorted(t)
  7.     local s = {}
  8.     for k,_ in pairs(t) do table.insert(s,k) end
  9.     table.sort(s)
  10.     local i = 0
  11.     return function () i = i + 1; return s[i], t[s[i]] end
  12. end
  13.  
  14. -- Return a function such as skip(foo)(a,b,c) = foo(b,c)
  15. function skip(foo)
  16.     return function(discard,...) return foo(...) end
  17. end
  18.  
  19. -- Return a function such as setarg(foo,a)(b,c) = foo(a,b,c)
  20. function setarg(foo,a)
  21.     return function(...) return foo(a,...) end
  22. end
  23.  
  24. -- Trigger a hotkey
  25. function hotkey(arg)
  26.     local id = vlc.misc.action_id( arg )
  27.     if id ~= nil then
  28.         vlc.var.set( vlc.object.libvlc(), "key-action", id )
  29.         return true
  30.     else
  31.         return false
  32.     end
  33. end
  34.  
  35. -- Take a video snapshot
  36. function snapshot()
  37.     local vout = vlc.object.find(nil,"vout","anywhere")
  38.     if not vout then return end
  39.     vlc.var.set(vout,"video-snapshot",nil)
  40. end
  41.  
  42. -- Naive (non recursive) table copy
  43. function table_copy(t)
  44.     c = {}
  45.     for i,v in pairs(t) do c[i]=v end
  46.     return c
  47. end
  48.  
  49. -- strip leading and trailing spaces
  50. function strip(str)
  51.     return string.gsub(str, "^%s*(.-)%s*$", "%1")
  52. end
  53.  
  54. -- print a table (recursively)
  55. function table_print(t,prefix)
  56.     local prefix = prefix or ""
  57.     if not t then
  58.         print(prefix.."/!\\ nil")
  59.         return
  60.     end
  61.     for a,b in pairs_sorted(t) do
  62.         print(prefix..tostring(a),b)
  63.         if type(b)==type({}) then
  64.             table_print(b,prefix.."\t")
  65.         end
  66.     end
  67. end
  68.  
  69. -- print the list of callbacks registered in lua
  70. -- useful for debug purposes
  71. function print_callbacks()
  72.     print "callbacks:"
  73.     table_print(vlc.callbacks)
  74. end 
  75.  
  76. -- convert a duration (in seconds) to a string
  77. function durationtostring(duration)
  78.     return string.format("%02d:%02d:%02d",
  79.                          math.floor(duration/3600),
  80.                          math.floor(duration/60)%60,
  81.                          math.floor(duration%60))
  82. end
  83.  
  84. -- realpath
  85. function realpath(path)
  86.     return string.gsub(string.gsub(string.gsub(string.gsub(path,"/%.%./[^/]+","/"),"/[^/]+/%.%./","/"),"/%./","/"),"//","/")
  87. end
  88.  
  89. -- seek
  90. function seek(value)
  91.     local input = vlc.object.input()
  92.     if string.sub(value,#value)=="%" then
  93.         vlc.var.set(input,"position",tonumber(string.sub(value,1,#value-1))/100.)
  94.     else
  95.         vlc.var.set(input,"time",tonumber(value))
  96.     end
  97. end
  98.  
  99. function volume(value)
  100.     if type(value)=="string" and string.sub(value,1,1) == "+" or string.sub(value,1,1) == "-" then
  101.         vlc.volume.set(vlc.volume.get()+tonumber(value))
  102.     else
  103.         vlc.volume.set(tostring(value))
  104.     end
  105. end
  106.