poppler/Annot.cc | 14 +++++++------- poppler/GlobalParams.cc | 28 +++++++++++----------------- poppler/GlobalParams.h | 2 +- poppler/GlobalParamsWin.cc | 4 ++-- utils/HtmlLinks.cc | 23 ++++++++--------------- utils/HtmlLinks.h | 12 ++++++------ utils/HtmlOutputDev.cc | 34 +++++++++++++++------------------- utils/HtmlOutputDev.h | 10 +++++----- 8 files changed, 55 insertions(+), 72 deletions(-)
New commits: commit 5b18fb371d41a6f551f04caf418d1140062c4870 Author: Albert Astals Cid <aa...@kde.org> Date: Fri Oct 29 15:48:42 2021 +0200 determineFallbackFont: Change parameter from GooString * to std::string diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 74ad0e7e..a175aa25 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -263,16 +263,16 @@ static const char *getFormAdditionalActionKey(Annot::FormAdditionalActionsType t return (type == Annot::actionFieldModified ? "K" : type == Annot::actionFormatField ? "F" : type == Annot::actionValidateField ? "V" : type == Annot::actionCalculateField ? "C" : nullptr); } -static const char *determineFallbackFont(GooString *tok, const char *defaultFallback) +static const char *determineFallbackFont(const std::string &tok, const char *defaultFallback) { // TODO: adjust these based on other example PDFs. - if (!tok->cmp("/ZaDb")) { + if (tok == "/ZaDb") { return "ZapfDingbats"; - } else if (!tok->cmp("/Cour")) { + } else if (tok == "/Cour") { return "Courier"; - } else if (!tok->cmp("/TiRo")) { + } else if (tok == "/TiRo") { return "TimesNewRoman"; - } else if (!tok->cmp("/Helvetica-Bold")) { + } else if (tok == "/Helvetica-Bold") { return "Helvetica-Bold"; } return defaultFallback; @@ -4218,7 +4218,7 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const GooString *da if (tok->getLength() >= 1 && tok->getChar(0) == '/') { if (!resources || !(font = resources->lookupFont(tok->c_str() + 1))) { if (xref != nullptr && resourcesDict != nullptr) { - const char *fallback = determineFallbackFont(tok, defaultFallback); + const char *fallback = determineFallbackFont(tok->toStr(), defaultFallback); fontToFree = createAnnotDrawFont(xref, resourcesDict, tok->c_str() + 1, fallback); font = fontToFree; } else { @@ -4593,7 +4593,7 @@ bool AnnotAppearanceBuilder::drawListBox(const FormFieldChoice *fieldChoice, con if (tok->getLength() >= 1 && tok->getChar(0) == '/') { if (!resources || !(font = resources->lookupFont(tok->c_str() + 1))) { if (xref != nullptr && resourcesDict != nullptr) { - const char *fallback = determineFallbackFont(tok, "Helvetica"); + const char *fallback = determineFallbackFont(tok->toStr(), "Helvetica"); fontToFree = createAnnotDrawFont(xref, resourcesDict, tok->c_str() + 1, fallback); font = fontToFree; } else { commit f897e21bc6e6823ed2912d8a496469eed41ca1da Author: Albert Astals Cid <aa...@kde.org> Date: Fri Oct 29 15:39:39 2021 +0200 Change some std::vector * to std::vector If we always new and always delete them, no need to have a pointer diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc index 01975901..47aa85a2 100644 --- a/poppler/GlobalParams.cc +++ b/poppler/GlobalParams.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2005 Martin Kretzschmar <mart...@gnome.org> // Copyright (C) 2005, 2006 Kristian Høgsberg <k...@redhat.com> -// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017-2020 Albert Astals Cid <aa...@kde.org> +// Copyright (C) 2005, 2007-2010, 2012, 2015, 2017-2021 Albert Astals Cid <aa...@kde.org> // Copyright (C) 2005 Jonathan Blandford <j...@redhat.com> // Copyright (C) 2006, 2007 Jeff Muizelaar <j...@infidigm.net> // Copyright (C) 2006 Takashi Iwai <ti...@suse.de> @@ -230,27 +230,23 @@ public: void scanWindowsFonts(GooString *winFontDir); #endif #ifdef WITH_FONTCONFIGURATION_FONTCONFIG - void addFcFont(SysFontInfo *si) { fonts->push_back(si); } + void addFcFont(SysFontInfo *si) { fonts.push_back(si); } #endif private: #ifdef _WIN32 SysFontInfo *makeWindowsFont(const char *name, int fontNum, const char *path); #endif - std::vector<SysFontInfo *> *fonts; + std::vector<SysFontInfo *> fonts; }; -SysFontList::SysFontList() -{ - fonts = new std::vector<SysFontInfo *>(); -} +SysFontList::SysFontList() { } SysFontList::~SysFontList() { - for (auto entry : *fonts) { + for (auto entry : fonts) { delete entry; } - delete fonts; } const SysFontInfo *SysFontList::find(const GooString *name, bool fixedWidth, bool exact) @@ -334,7 +330,7 @@ const SysFontInfo *SysFontList::find(const GooString *name, bool fixedWidth, boo // search for the font const SysFontInfo *fi = nullptr; - for (const SysFontInfo *f : *fonts) { + for (const SysFontInfo *f : fonts) { fi = f; if (fi->match(name2, bold, italic, oblique, fixedWidth)) { break; @@ -343,7 +339,7 @@ const SysFontInfo *SysFontList::find(const GooString *name, bool fixedWidth, boo } if (!fi && !exact && bold) { // try ignoring the bold flag - for (const SysFontInfo *f : *fonts) { + for (const SysFontInfo *f : fonts) { fi = f; if (fi->match(name2, false, italic)) { break; @@ -353,7 +349,7 @@ const SysFontInfo *SysFontList::find(const GooString *name, bool fixedWidth, boo } if (!fi && !exact && (bold || italic)) { // try ignoring the bold and italic flags - for (const SysFontInfo *f : *fonts) { + for (const SysFontInfo *f : fonts) { fi = f; if (fi->match(name2, false, false)) { break; @@ -387,7 +383,6 @@ GlobalParams::GlobalParams(const char *customPopplerDataDir) : popplerDataDir(cu nameToUnicodeZapfDingbats = new NameToCharCode(); nameToUnicodeText = new NameToCharCode(); - toUnicodeDirs = new std::vector<GooString *>(); sysFonts = new SysFontList(); psExpandSmaller = false; psShrinkLarger = true; @@ -473,7 +468,7 @@ void GlobalParams::scanEncodingDirs() dir = new GDir(dataPathBuffer, false); while (entry = dir->getNextEntry(), entry != nullptr) { addCMapDir(entry->getName(), entry->getFullPath()); - toUnicodeDirs->push_back(entry->getFullPath()->copy()); + toUnicodeDirs.push_back(entry->getFullPath()->copy()); delete entry; } delete dir; @@ -542,10 +537,9 @@ GlobalParams::~GlobalParams() delete nameToUnicodeZapfDingbats; delete nameToUnicodeText; - for (auto entry : *toUnicodeDirs) { + for (auto entry : toUnicodeDirs) { delete entry; } - delete toUnicodeDirs; delete sysFonts; delete textEncoding; @@ -631,7 +625,7 @@ FILE *GlobalParams::findToUnicodeFile(const GooString *name) FILE *f; globalParamsLocker(); - for (const GooString *dir : *toUnicodeDirs) { + for (const GooString *dir : toUnicodeDirs) { fileName = appendToPath(dir->copy(), name->c_str()); f = openFile(fileName->c_str(), "r"); delete fileName; diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h index b98d33e0..44875ed1 100644 --- a/poppler/GlobalParams.h +++ b/poppler/GlobalParams.h @@ -170,7 +170,7 @@ private: std::unordered_map<std::string, std::string> unicodeMaps; // list of CMap dirs, indexed by collection std::unordered_multimap<std::string, std::string> cMapDirs; - std::vector<GooString *> *toUnicodeDirs; // list of ToUnicode CMap dirs + std::vector<GooString *> toUnicodeDirs; // list of ToUnicode CMap dirs bool baseFontsInitialized; #ifdef _WIN32 // windows font substitutes (for CID fonts) diff --git a/poppler/GlobalParamsWin.cc b/poppler/GlobalParamsWin.cc index d4eb5871..0d44f736 100644 --- a/poppler/GlobalParamsWin.cc +++ b/poppler/GlobalParamsWin.cc @@ -9,7 +9,7 @@ // Copyright (C) 2013, 2018, 2019 Adam Reichold <adamreich...@myopera.com> // Copyright (C) 2013 Dmytro Morgun <lzt...@gmail.com> // Copyright (C) 2017 Christoph Cullmann <cullm...@kde.org> - // Copyright (C) 2017, 2018, 2020 Albert Astals Cid <aa...@kde.org> + // Copyright (C) 2017, 2018, 2020, 2021 Albert Astals Cid <aa...@kde.org> // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <i...@kdab.com>. Work sponsored by the LiMux project of the city of Munich // Copyright (C) 2019 Christian Persch <c...@src.gnome.org> // Copyright (C) 2019 Oliver Sander <oliver.san...@tu-dresden.de> @@ -260,7 +260,7 @@ void SysFontList::scanWindowsFonts(GooString *winFontDir) } else { p1 = p0 + strlen(p0); } - fonts->push_back(makeWindowsFont(p0, fontNum, fontPath->c_str())); + fonts.push_back(makeWindowsFont(p0, fontNum, fontPath->c_str())); p0 = p1; ++fontNum; } diff --git a/utils/HtmlLinks.cc b/utils/HtmlLinks.cc index b505e37c..8b48499b 100644 --- a/utils/HtmlLinks.cc +++ b/utils/HtmlLinks.cc @@ -18,7 +18,7 @@ // under GPL version 2 or later // // Copyright (C) 2008 Boris Toloknov <tl...@yandex.ru> -// Copyright (C) 2010 Albert Astals Cid <aa...@kde.org> +// Copyright (C) 2010, 2021 Albert Astals Cid <aa...@kde.org> // Copyright (C) 2013 Julien Nabet <serval2...@yahoo.fr> // // To see a description of the changes please see the Changelog file that @@ -111,7 +111,7 @@ static GooString *EscapeSpecialChars(GooString *s) return tmp ? tmp : s; } -GooString *HtmlLink::getLinkStart() +GooString *HtmlLink::getLinkStart() const { GooString *res = new GooString("<a href=\""); GooString *d = xml ? EscapeSpecialChars(dest) : dest; @@ -133,30 +133,23 @@ GooString *HtmlLink::getLinkStart() return tmp; }*/ -HtmlLinks::HtmlLinks() -{ - accu = new std::vector<HtmlLink>(); -} +HtmlLinks::HtmlLinks() { } -HtmlLinks::~HtmlLinks() -{ - delete accu; - accu = nullptr; -} +HtmlLinks::~HtmlLinks() { } bool HtmlLinks::inLink(double xmin, double ymin, double xmax, double ymax, int &p) const { - for (std::vector<HtmlLink>::iterator i = accu->begin(); i != accu->end(); ++i) { + for (std::vector<HtmlLink>::const_iterator i = accu.begin(); i != accu.end(); ++i) { if (i->inLink(xmin, ymin, xmax, ymax)) { - p = (i - accu->begin()); + p = (i - accu.begin()); return true; } } return false; } -HtmlLink *HtmlLinks::getLink(int i) const +const HtmlLink *HtmlLinks::getLink(int i) const { - return &(*accu)[i]; + return &accu[i]; } diff --git a/utils/HtmlLinks.h b/utils/HtmlLinks.h index fa4fb2a3..7bb8cc39 100644 --- a/utils/HtmlLinks.h +++ b/utils/HtmlLinks.h @@ -17,7 +17,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2010, 2018 Albert Astals Cid <aa...@kde.org> +// Copyright (C) 2010, 2018, 2021 Albert Astals Cid <aa...@kde.org> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -48,29 +48,29 @@ public: ~HtmlLink(); HtmlLink &operator=(const HtmlLink &) = delete; bool isEqualDest(const HtmlLink &x) const; - GooString *getDest() { return new GooString(dest); } + GooString *getDest() const { return new GooString(dest); } double getX1() const { return Xmin; } double getX2() const { return Xmax; } double getY1() const { return Ymin; } double getY2() const { return Ymax; } bool inLink(double xmin, double ymin, double xmax, double ymax) const; // GooString *Link(GooString *content); - GooString *getLinkStart(); + GooString *getLinkStart() const; }; class HtmlLinks { private: - std::vector<HtmlLink> *accu; + std::vector<HtmlLink> accu; public: HtmlLinks(); ~HtmlLinks(); HtmlLinks(const HtmlLinks &) = delete; HtmlLinks &operator=(const HtmlLinks &) = delete; - void AddLink(const HtmlLink &x) { accu->push_back(x); } + void AddLink(const HtmlLink &x) { accu.push_back(x); } bool inLink(double xmin, double ymin, double xmax, double ymax, int &p) const; - HtmlLink *getLink(int i) const; + const HtmlLink *getLink(int i) const; }; #endif diff --git a/utils/HtmlOutputDev.cc b/utils/HtmlOutputDev.cc index bd55ac7d..35d6776d 100644 --- a/utils/HtmlOutputDev.cc +++ b/utils/HtmlOutputDev.cc @@ -285,7 +285,6 @@ HtmlPage::HtmlPage(bool rawOrderA) yxCur1 = yxCur2 = nullptr; fonts = new HtmlFontAccu(); links = new HtmlLinks(); - imgList = new std::vector<HtmlImage *>(); pageWidth = 0; pageHeight = 0; fontsPageMarker = 0; @@ -299,10 +298,9 @@ HtmlPage::~HtmlPage() delete DocName; delete fonts; delete links; - for (auto entry : *imgList) { + for (auto entry : imgList) { delete entry; } - delete imgList; } void HtmlPage::updateFont(GfxState *state) @@ -630,8 +628,8 @@ void HtmlPage::coalesce() } /* fix <i>, <b> if str1 and str2 differ and handle switch of links */ - HtmlLink *hlink1 = str1->getLink(); - HtmlLink *hlink2 = str2->getLink(); + const HtmlLink *hlink1 = str1->getLink(); + const HtmlLink *hlink2 = str2->getLink(); bool switch_links = !hlink1 || !hlink2 || !hlink1->isEqualDest(*hlink2); bool finish_a = switch_links && hlink1 != nullptr; bool finish_italic = hfont1->isItalic() && (!hfont2->isItalic() || finish_a); @@ -713,7 +711,7 @@ void HtmlPage::dumpAsXML(FILE *f, int page) delete fontCSStyle; } - for (auto ptr : *imgList) { + for (auto ptr : imgList) { auto img = static_cast<HtmlImage *>(ptr); if (!noRoundedCoordinates) { fprintf(f, "<image top=\"%d\" left=\"%d\" ", xoutRound(img->yMin), xoutRound(img->xMin)); @@ -725,7 +723,7 @@ void HtmlPage::dumpAsXML(FILE *f, int page) fprintf(f, "src=\"%s\"/>\n", img->fName->c_str()); delete img; } - imgList->clear(); + imgList.clear(); for (HtmlString *tmp = yxStrings; tmp; tmp = tmp->yxNext) { if (tmp->htext) { @@ -910,7 +908,7 @@ void HtmlPage::dump(FILE *f, int pageNum, const std::vector<std::string> &backgr } else { fprintf(f, "<a name=%d></a>", pageNum); // Loop over the list of image names on this page - for (auto ptr : *imgList) { + for (auto ptr : imgList) { auto img = static_cast<HtmlImage *>(ptr); // see printCSS() for class names @@ -924,7 +922,7 @@ void HtmlPage::dump(FILE *f, int pageNum, const std::vector<std::string> &backgr fprintf(f, "<img%s src=\"%s\"/><br/>\n", styles[style_index], img->fName->c_str()); delete img; } - imgList->clear(); + imgList.clear(); GooString *str; for (HtmlString *tmp = yxStrings; tmp; tmp = tmp->yxNext) { @@ -975,7 +973,7 @@ void HtmlPage::setDocName(const char *fname) void HtmlPage::addImage(GooString *fname, GfxState *state) { HtmlImage *img = new HtmlImage(fname, state); - imgList->push_back(img); + imgList.push_back(img); } //------------------------------------------------------------------------ @@ -1073,16 +1071,15 @@ HtmlOutputDev::HtmlOutputDev(Catalog *catalogA, const char *fileName, const char needClose = false; pages = new HtmlPage(rawOrder); - glMetaVars = new std::vector<HtmlMetaVar *>(); - glMetaVars->push_back(new HtmlMetaVar("generator", "pdftohtml 0.36")); + glMetaVars.push_back(new HtmlMetaVar("generator", "pdftohtml 0.36")); if (author) - glMetaVars->push_back(new HtmlMetaVar("author", author)); + glMetaVars.push_back(new HtmlMetaVar("author", author)); if (keywords) - glMetaVars->push_back(new HtmlMetaVar("keywords", keywords)); + glMetaVars.push_back(new HtmlMetaVar("keywords", keywords)); if (date) - glMetaVars->push_back(new HtmlMetaVar("date", date)); + glMetaVars.push_back(new HtmlMetaVar("date", date)); if (subject) - glMetaVars->push_back(new HtmlMetaVar("subject", subject)); + glMetaVars.push_back(new HtmlMetaVar("subject", subject)); maxPageWidth = 0; maxPageHeight = 0; @@ -1170,10 +1167,9 @@ HtmlOutputDev::~HtmlOutputDev() delete Docname; delete docTitle; - for (auto entry : *glMetaVars) { + for (auto entry : glMetaVars) { delete entry; } - delete glMetaVars; if (fContentsFrame) { fputs("</body>\n</html>\n", fContentsFrame); @@ -1612,7 +1608,7 @@ void HtmlOutputDev::dumpMetaVars(FILE *file) { GooString *var; - for (const HtmlMetaVar *t : *glMetaVars) { + for (const HtmlMetaVar *t : glMetaVars) { var = t->toString(); fprintf(file, "%s\n", var->c_str()); delete var; diff --git a/utils/HtmlOutputDev.h b/utils/HtmlOutputDev.h index 6159c955..c95a05f4 100644 --- a/utils/HtmlOutputDev.h +++ b/utils/HtmlOutputDev.h @@ -80,13 +80,13 @@ public: // Add a character to the string. void addChar(GfxState *state, double x, double y, double dx, double dy, Unicode u); - HtmlLink *getLink() { return link; } + const HtmlLink *getLink() const { return link; } const HtmlFont &getFont() const { return *fonts->Get(fontpos); } void endString(); // postprocessing private: // aender die text variable - HtmlLink *link; + const HtmlLink *link; double xMin, xMax; // bounding box x coordinates double yMin, yMax; // bounding box y coordinates int col; // starting column @@ -147,7 +147,7 @@ public: void addImage(GooString *fname, GfxState *state); // number of images on the current page - int getNumImages() { return imgList->size(); } + int getNumImages() { return imgList.size(); } void dump(FILE *f, int pageNum, const std::vector<std::string> &backgroundImages); @@ -177,7 +177,7 @@ private: int fontsPageMarker; HtmlFontAccu *fonts; HtmlLinks *links; - std::vector<HtmlImage *> *imgList; + std::vector<HtmlImage *> imgList; GooString *DocName; int pageWidth; @@ -311,7 +311,7 @@ private: int maxPageHeight; GooString *Docname; GooString *docTitle; - std::vector<HtmlMetaVar *> *glMetaVars; + std::vector<HtmlMetaVar *> glMetaVars; Catalog *catalog; Page *docPage; std::vector<std::string> backgroundImages;