diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-06-10 10:55:22 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-06-10 10:55:22 +0100 |
| commit | 8771c1f7b00ab0fb5c252adaa437d753155b7c18 (patch) | |
| tree | f1f4c6109c1b64c795a05ff2a6188f246028e767 /tools | |
| parent | 91e1e17b4c9771e00b48d9fcc0dcbe2bdfa94c17 (diff) | |
Rename Font -> FontAsset; add dcpdumpsub tool.
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/dcpdumpsub.cc | 90 | ||||
| -rw-r--r-- | tools/wscript | 6 |
2 files changed, 96 insertions, 0 deletions
diff --git a/tools/dcpdumpsub.cc b/tools/dcpdumpsub.cc new file mode 100644 index 00000000..06802320 --- /dev/null +++ b/tools/dcpdumpsub.cc @@ -0,0 +1,90 @@ +/* + Copyright (C) 2015 Carl Hetherington <cth@carlh.net> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "smpte_subtitle_asset.h" +#include "util.h" +#include <getopt.h> +#include <cstdlib> +#include <string> +#include <iostream> + +using std::string; +using std::cout; +using std::cerr; +using std::map; + +static void +help (string n) +{ + cerr << "Syntax: " << n << " [OPTION] <MXF>\n" + << " -h, --help show this help\n" + << " -n, --no-fonts don't extract fonts\n"; +} + +int +main (int argc, char* argv[]) +{ + bool extract_fonts = true; + + int option_index = 0; + while (1) { + static struct option long_options[] = { + { "help", no_argument, 0, 'h'}, + { "no-fonts", no_argument, 0, 'n'}, + { 0, 0, 0, 0 } + }; + + int c = getopt_long (argc, argv, "hn", long_options, &option_index); + + if (c == -1) { + break; + } + + switch (c) { + case 'h': + help (argv[0]); + exit (EXIT_SUCCESS); + case 'n': + extract_fonts = false; + break; + } + } + + if (argc <= optind || argc > (optind + 2)) { + help (argv[0]); + exit (EXIT_FAILURE); + } + + dcp::SMPTESubtitleAsset sub (argv[optind]); + + cout << sub.xml_as_string() << "\n"; + + if (extract_fonts) { + map<string, dcp::Data> fonts = sub.fonts (); + for (map<string, dcp::Data>::const_iterator i = fonts.begin(); i != fonts.end(); ++i) { + FILE* f = dcp::fopen_boost (i->first + ".ttf", "wb"); + if (!f) { + cerr << "Could not open font file " << i->first << ".ttf for writing"; + exit (EXIT_FAILURE); + } + fwrite (i->second.data.get(), 1, i->second.size, f); + fclose (f); + } + } +} diff --git a/tools/wscript b/tools/wscript index 10389eac..26474fc8 100644 --- a/tools/wscript +++ b/tools/wscript @@ -11,3 +11,9 @@ def build(bld): obj.source = 'dcpinfo.cc common.cc' obj.target = 'dcpinfo' + obj = bld(features = 'cxx cxxprogram') + obj.use = ['libdcp%s' % bld.env.API_VERSION] + obj.uselib = 'OPENJPEG CXML' + obj.source = 'dcpdumpsub.cc' + obj.target = 'dcpdumpsub' + |
