From bf4446523dd891049cabf1bcd68d20def57bc731 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 20 Dec 2020 23:20:55 +0100 Subject: [PATCH] Add FontData class. --- src/lib/font_data.cc | 56 ++++++++++++++++++++++++++++++++++++++++++++ src/lib/font_data.h | 53 +++++++++++++++++++++++++++++++++++++++++ src/lib/wscript | 1 + 3 files changed, 110 insertions(+) create mode 100644 src/lib/font_data.cc create mode 100644 src/lib/font_data.h diff --git a/src/lib/font_data.cc b/src/lib/font_data.cc new file mode 100644 index 000000000..83b6562f0 --- /dev/null +++ b/src/lib/font_data.cc @@ -0,0 +1,56 @@ +/* + Copyright (C) 2020 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see . + +*/ + + +#include "font.h" +#include "font_data.h" +#include "dcpomatic_assert.h" +#include + + +using boost::shared_ptr; + + +dcpomatic::FontData::FontData (shared_ptr font) + : id (font->id()) +{ + if (font->file()) { + data = dcp::ArrayData(font->file().get()); + } +} + + +bool +dcpomatic::operator== (FontData const& a, FontData const& b) +{ + if (a.id != b.id) { + return false; + } + + return a.data == b.data; +} + + +bool +dcpomatic::operator!= (FontData const& a, FontData const& b) +{ + return !(a == b); +} + diff --git a/src/lib/font_data.h b/src/lib/font_data.h new file mode 100644 index 000000000..90543bec9 --- /dev/null +++ b/src/lib/font_data.h @@ -0,0 +1,53 @@ +/* + Copyright (C) 2020 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see . + +*/ + + +#include +#include +#include + + +namespace dcpomatic { + + +class Font; + + +/** A font (TTF) file held as a block of data */ +class FontData +{ +public: + FontData (boost::shared_ptr font); + + FontData (std::string id_, dcp::ArrayData data_) + : id(id_) + , data(data_) + {} + + std::string id; + boost::optional data; +}; + + +extern bool operator== (FontData const& a, FontData const& b); +extern bool operator!= (FontData const& a, FontData const& b); + + +} diff --git a/src/lib/wscript b/src/lib/wscript index 5fb266756..6ea823728 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -110,6 +110,7 @@ sources = """ filter.cc ffmpeg_image_proxy.cc font.cc + font_data.cc frame_interval_checker.cc frame_rate_change.cc hints.cc -- 2.30.2