summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-06-10 10:55:22 +0100
committerCarl Hetherington <cth@carlh.net>2015-06-10 10:55:22 +0100
commit8771c1f7b00ab0fb5c252adaa437d753155b7c18 (patch)
treef1f4c6109c1b64c795a05ff2a6188f246028e767 /tools
parent91e1e17b4c9771e00b48d9fcc0dcbe2bdfa94c17 (diff)
Rename Font -> FontAsset; add dcpdumpsub tool.
Diffstat (limited to 'tools')
-rw-r--r--tools/dcpdumpsub.cc90
-rw-r--r--tools/wscript6
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'
+