summaryrefslogtreecommitdiff
path: root/src
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 /src
parent91e1e17b4c9771e00b48d9fcc0dcbe2bdfa94c17 (diff)
Rename Font -> FontAsset; add dcpdumpsub tool.
Diffstat (limited to 'src')
-rw-r--r--src/data.h38
-rw-r--r--src/dcp.cc4
-rw-r--r--src/font_asset.cc (renamed from src/font.cc)10
-rw-r--r--src/font_asset.h (renamed from src/font.h)10
-rw-r--r--src/interop_subtitle_asset.cc10
-rw-r--r--src/smpte_subtitle_asset.cc6
-rw-r--r--src/subtitle_asset.cc13
-rw-r--r--src/subtitle_asset.h15
-rw-r--r--src/wscript5
9 files changed, 80 insertions, 31 deletions
diff --git a/src/data.h b/src/data.h
new file mode 100644
index 00000000..d1f52b3b
--- /dev/null
+++ b/src/data.h
@@ -0,0 +1,38 @@
+/*
+ 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 <boost/shared_array.hpp>
+
+namespace dcp {
+
+class Data
+{
+public:
+ Data () {}
+
+ Data (boost::shared_array<uint8_t> data_, boost::uintmax_t size_)
+ : data (data_)
+ , size (size_)
+ {}
+
+ boost::shared_array<uint8_t> data;
+ boost::uintmax_t size;
+};
+
+}
diff --git a/src/dcp.cc b/src/dcp.cc
index 12aaee47..c1675401 100644
--- a/src/dcp.cc
+++ b/src/dcp.cc
@@ -41,7 +41,7 @@
#include "decrypted_kdm_key.h"
#include "dcp_assert.h"
#include "reel_asset.h"
-#include "font.h"
+#include "font_asset.h"
#include <xmlsec/xmldsig.h>
#include <xmlsec/app.h>
#include <libxml++/libxml++.h>
@@ -176,7 +176,7 @@ DCP::read (bool keep_going, ReadErrors* errors)
throw DCPReadError ("Unknown MXF essence type");
}
} else if (boost::filesystem::extension (path) == ".ttf") {
- other_assets.push_back (shared_ptr<Font> (new Font (path)));
+ other_assets.push_back (shared_ptr<FontAsset> (new FontAsset (path)));
}
}
diff --git a/src/font.cc b/src/font_asset.cc
index cbfb999a..8f8e4ff3 100644
--- a/src/font.cc
+++ b/src/font_asset.cc
@@ -17,24 +17,24 @@
*/
-/** @file src/font.cc
- * @brief Font class.
+/** @file src/font_asset.cc
+ * @brief FontAsset class.
*/
-#include "font.h"
+#include "font_asset.h"
using std::string;
using namespace dcp;
-Font::Font (boost::filesystem::path file)
+FontAsset::FontAsset (boost::filesystem::path file)
: Asset (file)
{
}
string
-Font::pkl_type (Standard) const
+FontAsset::pkl_type (Standard) const
{
return "application/ttf";
}
diff --git a/src/font.h b/src/font_asset.h
index e87419c0..13333777 100644
--- a/src/font.h
+++ b/src/font_asset.h
@@ -17,21 +17,21 @@
*/
-/** @file src/font.h
- * @brief Font class.
+/** @file src/font_asset.h
+ * @brief FontAsset class.
*/
#include "asset.h"
namespace dcp {
-/** @class Font
+/** @class FontAsset
* @brief A (truetype) font asset for subtitles in an Interop DCP.
*/
-class Font : public Asset
+class FontAsset : public Asset
{
public:
- Font (boost::filesystem::path file);
+ FontAsset (boost::filesystem::path file);
private:
std::string pkl_type (Standard standard) const;
diff --git a/src/interop_subtitle_asset.cc b/src/interop_subtitle_asset.cc
index 5be4c53c..e329158e 100644
--- a/src/interop_subtitle_asset.cc
+++ b/src/interop_subtitle_asset.cc
@@ -23,7 +23,7 @@
#include "raw_convert.h"
#include "font_node.h"
#include "util.h"
-#include "font.h"
+#include "font_asset.h"
#include "dcp_assert.h"
#include <libxml++/libxml++.h>
#include <boost/foreach.hpp>
@@ -163,7 +163,7 @@ InteropSubtitleAsset::write (boost::filesystem::path p) const
if (!f) {
throw FileError ("could not open font file for writing", file, errno);
}
- map<string, FontData>::const_iterator j = _fonts.find (i->id);
+ map<string, FileData>::const_iterator j = _fonts.find (i->id);
if (j != _fonts.end ()) {
fwrite (j->second.data.get(), 1, j->second.size, f);
j->second.file = file;
@@ -176,7 +176,7 @@ void
InteropSubtitleAsset::resolve_fonts (list<shared_ptr<Object> > objects)
{
BOOST_FOREACH (shared_ptr<Object> i, objects) {
- shared_ptr<Font> font = dynamic_pointer_cast<Font> (i);
+ shared_ptr<FontAsset> font = dynamic_pointer_cast<FontAsset> (i);
if (!font) {
continue;
}
@@ -192,8 +192,8 @@ InteropSubtitleAsset::resolve_fonts (list<shared_ptr<Object> > objects)
void
InteropSubtitleAsset::add_font_assets (list<shared_ptr<Asset> >& assets)
{
- for (map<string, FontData>::const_iterator i = _fonts.begin(); i != _fonts.end(); ++i) {
+ for (map<string, FileData>::const_iterator i = _fonts.begin(); i != _fonts.end(); ++i) {
DCP_ASSERT (i->second.file);
- assets.push_back (shared_ptr<Font> (new Font (i->second.file.get ())));
+ assets.push_back (shared_ptr<FontAsset> (new FontAsset (i->second.file.get ())));
}
}
diff --git a/src/smpte_subtitle_asset.cc b/src/smpte_subtitle_asset.cc
index 362211cf..e426ae22 100644
--- a/src/smpte_subtitle_asset.cc
+++ b/src/smpte_subtitle_asset.cc
@@ -144,7 +144,7 @@ SMPTESubtitleAsset::SMPTESubtitleAsset (boost::filesystem::path file)
}
if (j != _load_font_nodes.end ()) {
- _fonts[(*j)->id] = FontData (data, buffer.Size ());
+ _fonts[(*j)->id] = FileData (data, buffer.Size ());
}
}
}
@@ -217,7 +217,7 @@ SMPTESubtitleAsset::write (boost::filesystem::path p) const
descriptor.EncodingName = "UTF-8";
BOOST_FOREACH (shared_ptr<dcp::SMPTELoadFontNode> i, _load_font_nodes) {
- map<string, FontData>::const_iterator j = _fonts.find (i->id);
+ map<string, FileData>::const_iterator j = _fonts.find (i->id);
if (j != _fonts.end ()) {
ASDCP::TimedText::TimedTextResourceDescriptor res;
unsigned int c;
@@ -245,7 +245,7 @@ SMPTESubtitleAsset::write (boost::filesystem::path p) const
}
BOOST_FOREACH (shared_ptr<dcp::SMPTELoadFontNode> i, _load_font_nodes) {
- map<string, FontData>::const_iterator j = _fonts.find (i->id);
+ map<string, FileData>::const_iterator j = _fonts.find (i->id);
if (j != _fonts.end ()) {
ASDCP::TimedText::FrameBuffer buffer;
buffer.SetData (j->second.data.get(), j->second.size);
diff --git a/src/subtitle_asset.cc b/src/subtitle_asset.cc
index 085e5959..d9a87263 100644
--- a/src/subtitle_asset.cc
+++ b/src/subtitle_asset.cc
@@ -39,6 +39,7 @@ using std::ofstream;
using std::stringstream;
using std::cout;
using std::cerr;
+using std::map;
using boost::shared_ptr;
using boost::shared_array;
using boost::optional;
@@ -324,5 +325,15 @@ SubtitleAsset::add_font_data (string id, boost::filesystem::path file)
throw FileError ("could not read font file", file, -1);
}
- _fonts[id] = FontData (data, size);
+ _fonts[id] = FileData (data, size);
+}
+
+map<string, Data>
+SubtitleAsset::fonts () const
+{
+ map<string, Data> out;
+ for (map<string, FileData>::const_iterator i = _fonts.begin(); i != _fonts.end(); ++i) {
+ out[i->first] = i->second;
+ }
+ return out;
}
diff --git a/src/subtitle_asset.h b/src/subtitle_asset.h
index 4cbbff0d..c28f6446 100644
--- a/src/subtitle_asset.h
+++ b/src/subtitle_asset.h
@@ -23,6 +23,7 @@
#include "asset.h"
#include "dcp_time.h"
#include "subtitle_string.h"
+#include "data.h"
#include <libcxml/cxml.h>
#include <boost/shared_array.hpp>
@@ -69,6 +70,7 @@ public:
void add (SubtitleString);
virtual void add_font (std::string id, boost::filesystem::path file) = 0;
+ std::map<std::string, Data> fonts () const;
virtual void write (boost::filesystem::path) const = 0;
virtual Glib::ustring xml_as_string () const = 0;
@@ -88,17 +90,14 @@ protected:
/** All our subtitles, in no particular order */
std::list<SubtitleString> _subtitles;
- class FontData {
+ class FileData : public Data {
public:
- FontData () {}
+ FileData () {}
- FontData (boost::shared_array<uint8_t> data_, boost::uintmax_t size_)
- : data (data_)
- , size (size_)
+ FileData (boost::shared_array<uint8_t> data_, boost::uintmax_t size_)
+ : Data (data_, size_)
{}
- boost::shared_array<uint8_t> data;
- boost::uintmax_t size;
/** .ttf file that this data was last written to */
mutable boost::optional<boost::filesystem::path> file;
};
@@ -107,7 +106,7 @@ protected:
* For Interop, the string is the font ID from the subtitle file.
* For SMPTE, the string is the font's URN from the subtitle file.
*/
- std::map<std::string, FontData> _fonts;
+ std::map<std::string, FileData> _fonts;
private:
/** @struct ParseState
diff --git a/src/wscript b/src/wscript
index f54aaa8f..ede704bb 100644
--- a/src/wscript
+++ b/src/wscript
@@ -15,7 +15,7 @@ def build(bld):
encrypted_kdm.cc
exceptions.cc
file.cc
- font.cc
+ font_asset.cc
font_node.cc
gamma_transfer_function.cc
interop_load_font_node.cc
@@ -71,11 +71,12 @@ def build(bld):
cpl.h
dcp.h
dcp_time.h
+ data.h
decrypted_kdm.h
decrypted_kdm_key.h
encrypted_kdm.h
exceptions.h
- font.h
+ font_asset.h
gamma_transfer_function.h
interop_load_font_node.h
interop_subtitle_asset.h