From: <ro...@us...> - 2011-06-06 17:07:09
|
Revision: 4241 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=4241&view=rev Author: rolenof Date: 2011-06-06 17:07:03 +0000 (Mon, 06 Jun 2011) Log Message: ----------- Modified Paths: -------------- trunk/plugins/Burner/trunk/Burner/BurnVideoDVD.cs trunk/plugins/Burner/trunk/Burner/Burner.csproj trunk/plugins/Burner/trunk/TODO.txt Added Paths: ----------- trunk/plugins/Burner/trunk/Burner/MenuGenerator.cs Modified: trunk/plugins/Burner/trunk/Burner/BurnVideoDVD.cs =================================================================== --- trunk/plugins/Burner/trunk/Burner/BurnVideoDVD.cs 2011-06-05 19:03:09 UTC (rev 4240) +++ trunk/plugins/Burner/trunk/Burner/BurnVideoDVD.cs 2011-06-06 17:07:03 UTC (rev 4241) @@ -246,7 +246,7 @@ ///<summary>Called to Generate the DVD Menu</summary> private void MenuGeneration() { - try + /*try { _CurrentProcess = "Generating DVD Menu - menuGen.exe"; Log.Debug("Entered MenuGeneration Process", ""); @@ -363,7 +363,19 @@ catch (Exception ex) { Log.Error(ex.ToString()); - } + }*/ + List<string> FileMenu = new List<string>(); + FileMenu.Add("Main menu"); + FileMenu.Add("Play Show"); + FileMenu.Add("Episodes"); + + List<string> ShowNames = new List<string>(); + ShowNames.Add(_FileNames[0].ToString()); + //ShowNames.Add(_FileNames[1].ToString()); + + MenuGenerator MenuGen = new MenuGenerator(ShowNames, Config.GetFile(Config.Dir.Skin, @"Default\Media\", "background.png"), + _TempFolderPath, FileMenu, true); + MenuGen.Start(); } ///<summary>Generate the DVD Creation Configuration XML File</summary> Modified: trunk/plugins/Burner/trunk/Burner/Burner.csproj =================================================================== --- trunk/plugins/Burner/trunk/Burner/Burner.csproj 2011-06-05 19:03:09 UTC (rev 4240) +++ trunk/plugins/Burner/trunk/Burner/Burner.csproj 2011-06-06 17:07:03 UTC (rev 4241) @@ -57,6 +57,7 @@ <Compile Include="BurnDataDVD.cs" /> <Compile Include="BurnDVDEvents.cs" /> <Compile Include="BurnVideoDVD.cs" /> + <Compile Include="MenuGenerator.cs" /> <Compile Include="GUIBurner.cs" /> <Compile Include="MadlldlibWrapper.cs" /> <Compile Include="MediaInfoDLL.cs" /> Added: trunk/plugins/Burner/trunk/Burner/MenuGenerator.cs =================================================================== --- trunk/plugins/Burner/trunk/Burner/MenuGenerator.cs (rev 0) +++ trunk/plugins/Burner/trunk/Burner/MenuGenerator.cs 2011-06-06 17:07:03 UTC (rev 4241) @@ -0,0 +1,235 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Collections; +using System.Linq; +using System.Text; +using System.Diagnostics; +using MediaPortal.GUI.Library; +using MediaPortal.Configuration; + +namespace Burner +{ + public class MenuGenerator + { + #region Enums + + private enum MenuGenarationState + { + MainMenuGen = 0, + SubMenuTmpl = 1, + SubMenu = 2 + } + + private enum MenuSteps + { + GenBackground = 0, + Buttons = 1, + Text = 2 + } + + #endregion + + # region Class Variables + + private Process MGProcess; // Will run the external processes in another thread + private string _PathToBackground; // Will hold path to image used for background + private string _PathToTempFolder; // will hold path to temp folder + private List<string> _ShowNames; // Names of shows on the disk + private List<string> _SubMenuStr; // 'Main menu','Play Show','Episodes' + private bool _InDebugMode; // true if in debug mode + private MenuGenarationState _MenuGenState; // States for whole menu generation + private MenuSteps _CurMenuSteps; // states for current menu (sub or main) + private int _curNum; // will hold number of current show + private bool _SubMenuAllFinished; // will be true when all submenus will be finished + + #endregion + + #region Constructors + + ///<summary>ManuGenerator Class Constructor.</summary> + ///<return>None</return> + ///<param name="ShowNames">List of show names to include in menu</param> + ///<param name="PathToBackground">string path to png with background</param> + ///<param name="PathToTempFolder">Path to the folder to use for creating temporary files</param> + ///<param name="SubMenuStr">List of text to replace in submenu 'Main menu','Play Show','Episode:' text</param> + + public MenuGenerator(List<string> ShowNames, string PathToBackground, string PathToTempFolder, + List<string> SubMenuStr, bool DebugMode) + { + _PathToBackground = PathToBackground; + _PathToTempFolder = PathToTempFolder; + _ShowNames = ShowNames; + _SubMenuStr = SubMenuStr; + _InDebugMode = DebugMode; + _curNum = 0; + + _MenuGenState = MenuGenarationState.MainMenuGen; + + Log.Debug("MenuGenerator Init:", "ShowNames count: " + ShowNames.Count); + Log.Debug("MenuGenerator Init:", "SubMenuStr count: " + SubMenuStr.Count); + } + + #endregion + + #region Start + + /// <summary> + /// Called to start menu generation + /// </summary> + public void Start() + { + //_CurMenuSteps = MenuSteps.GenBackground; + switch (_MenuGenState) + { + // Step 1. Main menu generation + case MenuGenarationState.MainMenuGen: + MainMenuGeneration(); + break; + + // Step 2. Submenu template generation + case MenuGenarationState.SubMenuTmpl: + //SubMenuTemplGeneration(); + break; + + // Step 3. Submenu generation + case MenuGenarationState.SubMenu: + if (_SubMenuAllFinished) + { + + } + else + { + //SubMenuGeneration(); + } + break; + } + + + } + + #endregion + + #region Events + + ///<summary>Called when each Menu Generation Step has completed.</summary> + private void MGProcess_Exited(object sender, EventArgs e) + { + Log.Debug("Menu creation Step Exited: Step: ", _CurMenuSteps.ToString()); + //ProvideStatusUpdate("DVD Burn Process Exited: " + _CurrentProcess); + + //one process has finished, start next process + if (_CurMenuSteps == MenuSteps.Text) + _MenuGenState += 1; + else + _CurMenuSteps += 1; + + Start(); + } + + #endregion + + #region MenuGenerationSteps + + private void MainMenuGeneration() + { + string args; + switch (_CurMenuSteps) + { + // Step 1. Generate background + case MenuSteps.GenBackground: + args = "convert -resize 720x576! \"" + _PathToBackground + "\""; + args += " \""; + args += Path.Combine(_PathToTempFolder, "menuBackground.png") + "\""; + GraphicMagic(args); + break; + + // Step 2. Put Buttons on background + case MenuSteps.Buttons: + for (int i = 1; i != _ShowNames.Count + 1; i++) + { + args = "composite -geometry +60+"; + int posy = i * 55 - 13; + args += posy.ToString(); + args += " -filter Point -resize \"50x\" \""; + args += Config.GetFile(Config.Dir.Base, @"Burner\", "navButton.png"); + args += "\" "; + args += "\"" + Path.Combine(_PathToTempFolder, "menuBackground.png") + "\" "; + args += "\"" + Path.Combine(_PathToTempFolder, "menuBackground.png") + "\""; + + GraphicMagic(args); + } + break; + // Step 3. Put Text on background + case MenuSteps.Text: + for (int i = 1; i != _ShowNames.Count + 1; i++) + { + int y = i*19 + 50; + string text = _ShowNames[i-1]; + GM_PutText(100, y, text, Path.Combine(_PathToTempFolder, + "menuBackground.png")); + } + break; + } + } + + #endregion + + #region Methods for utils + + private void GraphicMagic(string args) + { + MGProcess = new Process(); + MGProcess.EnableRaisingEvents = true; + MGProcess.StartInfo.WorkingDirectory = Config.GetSubFolder(Config.Dir.Base, @"Burner\"); + MGProcess.StartInfo.UseShellExecute = false; + + if (!_InDebugMode) // Show output if in Debug mode + { + MGProcess.StartInfo.RedirectStandardOutput = true; + MGProcess.StartInfo.CreateNoWindow = true; + } + + //MGProcess.StartInfo.FileName = Config.GetFile(Config.Dir.Base, @"Burner\", "mencoder_copy.exe"); + MGProcess.StartInfo.FileName = Config.GetFile(Config.Dir.Base, @"Burner\", "gm.exe"); + MGProcess.StartInfo.Arguments = ConvertAsciiToUnicode(args); + + MGProcess.Exited += new EventHandler(MGProcess_Exited); + + MGProcess.Start(); + } + + private void GM_PutText(int x, int y, string text, string image) + { + string args = "convert -quality 100 -size \"720x576\" -font \"C:\\WINDOWS\\Fonts\\tahomabd.ttf\" -pointsize 19 -fill white -draw "; + args += "\"text " + x.ToString() + "," + y.ToString(); + args += "\'"+ ConvertAsciiToUnicode(text) + "\'\" "; + args += "\"" + image + "\" \"" + image + "\""; + + GraphicMagic(args); + } + + private string ConvertAsciiToUnicode(string theAsciiString) + { + // Create two different encodings. + Encoding aAsciiEncoding = Encoding.Default; + Encoding aUnicodeEncoding = Encoding.UTF8; + // Convert the string into a byte[]. + byte[] aAsciiBytes = aAsciiEncoding.GetBytes(theAsciiString); + // Perform the conversion from one encoding to the other. + byte[] aUnicodeBytes = Encoding.Convert(aAsciiEncoding, aUnicodeEncoding, + aAsciiBytes); + // Convert the new byte[] into a char[] and then into a string. + char[] aUnicodeChars = new + char[aUnicodeEncoding.GetCharCount(aUnicodeBytes, 0, aUnicodeBytes.Length)]; + aUnicodeEncoding.GetChars(aUnicodeBytes, 0, aUnicodeBytes.Length, + aUnicodeChars, 0); + string aUnicodeString = new string(aUnicodeChars); + return aUnicodeString; + } + + #endregion + + } +} + Modified: trunk/plugins/Burner/trunk/TODO.txt =================================================================== --- trunk/plugins/Burner/trunk/TODO.txt 2011-06-05 19:03:09 UTC (rev 4240) +++ trunk/plugins/Burner/trunk/TODO.txt 2011-06-06 17:07:03 UTC (rev 4241) @@ -3,32 +3,27 @@ # TODO: Add background image selection 2. Generating Main Menu Nav Buttons - gm.exe convert -quality 100 -size "720x576" xc:transparent "I:\temp\DVD\navButtonStamp.png" + gm.exe convert -quality 100 -size "720x576" xc:transparent "I:\temp\DVD\navButtonStamp.png" // \xEF\xF0\xEE\xE7\xF0\xE0\xF7\xED\xFB\xE9 \xEB\xE8\xF1\xF2 gm.exe composite -geometry +60+42 -filter Point -resize "50x" "I:\Program Files\Team MediaPortal\MediaPortal\Burner\navButton.png" "I:\temp\DVD\navButtonStamp.png" "I:\temp\DVD\navButtonStamp.png" + // \xE4\xEE\xE1\xE0\xE2\xEB\xE5\xED\xE8\xE5 "\xF1\xF2\xF0\xE5\xEB\xEE\xF7\xE5\xEA" \xED\xE0 \xEF\xF0\xEE\xE7\xF0\xE0\xF7\xED\xFB\xE9 \xEB\xE8\xF1\xF2 # NOTE: Move every next nav_button to 55 pix on y -# TODO: Unnessesary to generate it every time. We could store it in %Skin%\Media\Burner folder 3. Generating Sub Menu Nav Buttons - gm.exe convert -quality 100 -size "720x576" xc:transparent "I:\temp\DVD\subMenuNavButtonStamp.png" + gm.exe convert -quality 100 -size "720x576" xc:transparent "I:\temp\DVD\subMenuNavButtonStamp.png" // \xEF\xF0\xEE\xE7\xF0\xE0\xF7\xED\xFB\xE9 \xEB\xE8\xF1\xF2 \xE4\xEB\xFF \xF1\xF3\xE1 \xEC\xE5\xED\xFE gm.exe composite -geometry +60+317 -filter Point -resize "50x" "I:\Program Files\Team MediaPortal\MediaPortal\Burner\navButton.png" "I:\temp\DVD\subMenuNavButtonStamp.png" "I:\temp\DVD\subMenuNavButtonStamp.png" gm.exe composite -geometry +60+372 -filter Point -resize "50x" "I:\Program Files\Team MediaPortal\MediaPortal\Burner\navButton.png" "I:\temp\DVD\subMenuNavButtonStamp.png" "I:\temp\DVD\subMenuNavButtonStamp.png" + // \xE4\xEE\xE1\xE0\xE2\xEB\xE5\xED\xE8\xE5 "\xF1\xF2\xF0\xE5\xEB\xEE\xF7\xE5\xEA" \xED\xE0 \xEF\xF0\xEE\xE7\xF0\xE0\xF7\xED\xFB\xE9 \xEB\xE8\xF1\xF2 # TODO: Unnessesary to generate it every time. We could store it in %Skin%\Media\Burner folder 4. Generating Submenu Template + gm.exe composite -resize 720x576! "menuBackground.png" "subMenuNoBackground.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" gm.exe convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 28 -fill white -draw "text 110,357 'Play Show'" "I:\temp\DVD\stamp.png" - gm.exe" convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 28 -fill white -draw "text 100,412 'Main Menu'" "I:\temp\DVD\stamp.png" + gm.exe convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 28 -fill white -draw "text 100,412 'Main Menu'" "I:\temp\DVD\stamp.png" # TODO: Add posibility to change 'Play Show' and 'Main menu' text - gm.exe convert -resize 720x576! "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\background.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" - gm.exe composite -dissolve 100% -geometry +535+100 -resize "175x" "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\hp_start.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" - gm.exe composite -dissolve 100% -geometry +535+250 -resize "175x" "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\hover_my videos.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" - gm.exe composite -quality 100 -dissolve 100% -geometry +75+50 -resize "590x390!" "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\osd_dialog_big.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" - gm.exe composite -dissolve 100% -geometry +65+325 -resize 230x50! "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\button_green_focus_165x32.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" - gm.exe composite -dissolve 100% -geometry +65+380 -resize 230x50! "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\button_green_focus_165x32.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" - gm.exe composite -quality 100 "I:\temp\DVD\stamp.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" + // \xED\xE0\xEB\xEE\xE6\xE5\xED\xE8\xE5 \xED\xE0\xE4\xEF\xE8\xF1\xE5\xE9 "Main menu" \xE8 "Play Show" 5. Generating Submenus( should be done for every file in list) - gm.exe convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 22 -fill white -draw "text +130+130 'Series: \xD5\xEB\xE5\xE1\xF6\xFB \xF5\xF0\xF3\xF1\xF2\xFF\xF9\xE8\xE5 -Episode: '" "I:\temp\DVD\stamp.png" + gm.exe convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 22 -fill white -draw "text +130+130 'Series: \xD5\xEB\xE5\xE1\xF6\xFB \xF5\xF0\xF3\xF1\xF2\xFF\xF9\xE8\xE5 Episode: '" "I:\temp\DVD\stamp.png" # TODO: Add posibility to change text gm.exe composite -quality 100 "I:\temp\DVD\stamp.png" "I:\temp\DVD\subMenuBackgroundTemplate.png" "I:\temp\DVD\subMenuBackground.0.png" png2yuv.exe" -n 30 -I p -f 25 -j "I:\temp\DVD\subMenuBackground.0.png" | "I:\Program Files\Team MediaPortal\MediaPortal\Burner\mpeg2enc.exe" -n p -f 8 -o "I:\temp\DVD\subMenuBackground.0.m2v" @@ -36,4 +31,17 @@ 6. Spumux generation # generate subMenuBackground.0.menu.config.xml for every movie in list -# generate \ No newline at end of file +# generate menuBackground.menu.config.xml for main menu + spumux.exe -v 1 "I:\temp\DVD\subMenuBackground.0.menu.config.xml" < "I:\temp\DVD\subMenuBackground.0.menu_temp.mpg" > "I:\temp\DVD\subMenuBackground.0.menu.mpg" + +7. Main menu template generation + gm.exe composite -dissolve 100% -geometry +535+100 -resize "175x" "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\hp_start.png" "I:\temp\DVD\menuBackground.png" "I:\temp\DVD\menuBackground.png" + gm.exe composite -dissolve 100% -geometry +535+250 -resize "175x" "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\hover_my videos.png" "I:\temp\DVD\menuBackground.png" "I:\temp\DVD\menuBackground.png" + gm.exe composite -dissolve 100% -geometry +65+50 -resize 450x50! "I:\Documents and Settings\All Users\Application Data\Team MediaPortal\MediaPortal\Skin\DefaultWide\media\button_green_focus_165x32.png" "I:\temp\DVD\menuBackground.png" "I:\temp\DVD\menuBackground.png" +# TODO: Add background image selection + +8. Add text with file names on main menu background + gm.exe convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 19 -fill white -draw "text 100,69 ' \xD5\xEB\xE5\xE1\xF6\xFB \xF5\xF0\xF3\xF1\xF2\xFF\xF9\xE8\xE5'" "I:\temp\DVD\stamp.png" + gm.exe composite -quality 100 "I:\temp\DVD\stamp.png" "I:\temp\DVD\menuBackground.png" "I:\temp\DVD\menuBackground.png" + gm.exe convert -quality 100 -size "720x576" xc:transparent -font "C:\WINDOWS\Fonts\tahomabd.ttf" -pointsize 19 -fill white -draw "text 109,91 ''" "I:\temp\DVD\stamp.png" + gm.exe composite -quality 100 "I:\temp\DVD\stamp.png" "I:\temp\DVD\menuBackground.png" "I:\temp\DVD\menuBackground.png" \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |