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

多媒体编程

开发平台:

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. #pragma once
  22. #include <atlcoll.h>
  23. #include "STS.h"
  24. // metadata
  25. typedef struct {CStringW name, email, url;} author_t;
  26. typedef struct {CStringW code, text;} language_t;
  27. typedef struct {CStringW title, date, comment; author_t author; language_t language, languageext;} metadata_t;
  28. // style
  29. typedef struct {CStringW alignment, relativeto, horizontal_margin, vertical_margin, rotate[3];} posattriblist_t;
  30. typedef struct {CStringW face, size, color[4], weight, italic, underline, alpha, outline, shadow, wrap;} fontstyle_t;
  31. typedef struct {CStringW name; fontstyle_t fontstyle; posattriblist_t pal;} style_t;
  32. // effect
  33. typedef struct {CStringW position; fontstyle_t fontstyle; posattriblist_t pal;} keyframe_t;
  34. typedef struct {CStringW name; CAutoPtrList<keyframe_t> keyframes;} effect_t;
  35. // subtitle/text
  36. typedef struct {int start, stop; CStringW effect, style, str; posattriblist_t pal;} text_t;
  37. class CUSFSubtitles
  38. {
  39. bool ParseUSFSubtitles(CComPtr<IXMLDOMNode> pNode);
  40.  void ParseMetadata(CComPtr<IXMLDOMNode> pNode, metadata_t& m);
  41.  void ParseStyle(CComPtr<IXMLDOMNode> pNode, style_t* s);
  42.   void ParseFontstyle(CComPtr<IXMLDOMNode> pNode, fontstyle_t& fs);
  43.   void ParsePal(CComPtr<IXMLDOMNode> pNode, posattriblist_t& pal);
  44.  void ParseEffect(CComPtr<IXMLDOMNode> pNode, effect_t* e);
  45.   void ParseKeyframe(CComPtr<IXMLDOMNode> pNode, keyframe_t* k);
  46.  void ParseSubtitle(CComPtr<IXMLDOMNode> pNode, int start, int stop);
  47.   void ParseText(CComPtr<IXMLDOMNode> pNode, CStringW& assstr);
  48.   void ParseShape(CComPtr<IXMLDOMNode> pNode);
  49. public:
  50. CUSFSubtitles();
  51. virtual ~CUSFSubtitles();
  52. bool Read(LPCTSTR fn);
  53. // bool Write(LPCTSTR fn); // TODO
  54. metadata_t metadata;
  55. CAutoPtrList<style_t> styles;
  56. CAutoPtrList<effect_t> effects;
  57. CAutoPtrList<text_t> texts;
  58. bool ConvertToSTS(CSimpleTextSubtitle& sts);
  59. // bool ConvertFromSTS(CSimpleTextSubtitle& sts); // TODO
  60. };