vsconv.cpp
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:5k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. // vsconv.cpp : Defines the class behaviors for the application.
  22. //
  23. #include "stdafx.h"
  24. #include "vsconv.h"
  25. #include "vsconvDlg.h"
  26. #include "....subtitlesVobSubFile.h"
  27. #ifdef _DEBUG
  28. #define new DEBUG_NEW
  29. #endif
  30. // CvsconvApp
  31. BEGIN_MESSAGE_MAP(CvsconvApp, CWinApp)
  32. ON_COMMAND(ID_HELP, CWinApp::OnHelp)
  33. END_MESSAGE_MAP()
  34. // CvsconvApp construction
  35. CvsconvApp::CvsconvApp()
  36. {
  37. // TODO: add construction code here,
  38. // Place all significant initialization in InitInstance
  39. }
  40. // The one and only CvsconvApp object
  41. CvsconvApp theApp;
  42. // CvsconvApp initialization
  43. BOOL CvsconvApp::InitInstance()
  44. {
  45. // InitCommonControls() is required on Windows XP if an application
  46. // manifest specifies use of ComCtl32.dll version 6 or later to enable
  47. // visual styles.  Otherwise, any window creation will fail.
  48. InitCommonControls();
  49. CWinApp::InitInstance();
  50. AfxEnableControlContainer();
  51. // TODO
  52. // if(__argc > 1)
  53. {
  54. CString in, out;
  55. CVobSubFile::SubFormat sf = CVobSubFile::None;
  56. int iLang = -1;
  57. bool fIgnoreForcedOnly = false;
  58. bool fForcedOnly = false;
  59. try
  60. {
  61. for(int i = 1; i < __argc; i++)
  62. {
  63. if(__targv[i][0] == '-' || __targv[i][0] == '/')
  64. {
  65. CString sw(&__targv[i][1]);
  66. if(sw == _T("f"))
  67. {
  68. if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
  69. {
  70. CString fmt = CString(__targv[i]).MakeLower();
  71. if(fmt == _T("winsubmux"))
  72. sf = CVobSubFile::WinSubMux;
  73. else if(fmt == _T("scenarist"))
  74. sf = CVobSubFile::Scenarist;
  75. else if(fmt == _T("maestro"))
  76. sf = CVobSubFile::Maestro;
  77. else
  78. throw _T("Unrecognized conversion format");
  79. }
  80. else
  81. throw _T("No conversion format given");
  82. }
  83. else if(sw == _T("i"))
  84. {
  85. if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
  86. in = __targv[i];
  87. else
  88. throw _T("Missing input file");
  89. }
  90. else if(sw == _T("o"))
  91. {
  92. if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
  93. out = __targv[i];
  94. else
  95. throw _T("Missing output file");
  96. }
  97. else if(sw == _T("id"))
  98. {
  99. if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
  100. iLang = _tcstol(__targv[i], NULL, 10);
  101. else
  102. throw _T("Missing stream id");
  103. }
  104. else if(sw == _T("ignoreforcedonly"))
  105. {
  106. fIgnoreForcedOnly = true;
  107. }
  108. else if(sw == _T("forcedonly"))
  109. {
  110. fForcedOnly = true;
  111. }
  112. }
  113. }
  114. if(!in.IsEmpty() && !out.IsEmpty() && sf != CVobSubFile::None)
  115. {
  116. CVobSubFile vsf(NULL);
  117. if(!vsf.Open(in))
  118. throw _T("Can't open input");
  119. if(iLang >= 0 && iLang < 32)
  120. vsf.m_iLang = iLang;
  121. if(fForcedOnly)
  122. vsf.m_fOnlyShowForcedSubs = true;
  123. if(fIgnoreForcedOnly)
  124. vsf.m_fOnlyShowForcedSubs = false;
  125. if(!vsf.Save(out, sf))
  126. throw _T("Can't save output");
  127. return FALSE;
  128. }
  129. }
  130. catch(LPCTSTR msg)
  131. {
  132. AfxMessageBox(CString(_T("Error: ")) + msg);
  133. }
  134. AfxMessageBox(
  135. _T("Usage: vsconv.exe <switches>nn")
  136. _T("-f "format" (winsubmux, scenarist, maestro)n")
  137. _T("-i "input"n")
  138. _T("-o "output"n")
  139. _T("-id 0-31 (optional)n")
  140. _T("-ignoreforcedonly (optional)n")
  141. _T("-forcedonly (optional)n")
  142. );
  143. return FALSE;
  144. }
  145. // TODO
  146. return FALSE;
  147. CvsconvDlg dlg;
  148. m_pMainWnd = &dlg;
  149. INT_PTR nResponse = dlg.DoModal();
  150. if (nResponse == IDOK)
  151. {
  152. // TODO: Place code here to handle when the dialog is
  153. //  dismissed with OK
  154. }
  155. else if (nResponse == IDCANCEL)
  156. {
  157. // TODO: Place code here to handle when the dialog is
  158. //  dismissed with Cancel
  159. }
  160. // Since the dialog has been closed, return FALSE so that we exit the
  161. //  application, rather than start the application's message pump.
  162. return FALSE;
  163. }