[poppler] glib/poppler-page.cc poppler/Annot.cc poppler/Annot.h poppler/FontInfo.cc poppler/Form.cc poppler/JSInfo.cc poppler/Link.cc poppler/Page.cc poppler/PSOutputDev.cc qt5/src qt6/src utils/pdfdetach.cc
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Apr 1 14:31:12 UTC 2022
glib/poppler-page.cc | 5 +----
poppler/Annot.cc | 4 ++--
poppler/Annot.h | 5 ++---
poppler/FontInfo.cc | 4 ++--
poppler/Form.cc | 7 +++----
poppler/JSInfo.cc | 14 +++++++-------
poppler/Link.cc | 3 +--
poppler/PSOutputDev.cc | 4 ++--
poppler/Page.cc | 17 ++++-------------
qt5/src/poppler-annotation.cc | 10 ++--------
qt6/src/poppler-annotation.cc | 10 ++--------
utils/pdfdetach.cc | 4 +---
12 files changed, 29 insertions(+), 58 deletions(-)
New commits:
commit d35e11a8f84d396a9d9ef43ef852d377adc3830a
Author: Albert Astals Cid <aacid at kde.org>
Date: Fri Apr 1 16:26:25 2022 +0200
Annots: Just return the std::vector instead of two getters
Simpler code to use and solves the int vs size_t mismatch by not having a
type involved at all
diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc
index 3fcd4b70..a9515f3b 100644
--- a/glib/poppler-page.cc
+++ b/glib/poppler-page.cc
@@ -1282,7 +1282,6 @@ GList *poppler_page_get_annot_mapping(PopplerPage *page)
{
GList *map_list = nullptr;
double width, height;
- gint i;
Annots *annots;
const PDFRectangle *crop_box;
@@ -1296,14 +1295,12 @@ GList *poppler_page_get_annot_mapping(PopplerPage *page)
poppler_page_get_size(page, &width, &height);
crop_box = page->page->getCropBox();
- for (i = 0; i < annots->getNumAnnots(); i++) {
+ for (Annot *annot : annots->getAnnots()) {
PopplerAnnotMapping *mapping;
PopplerRectangle rect;
- Annot *annot;
gboolean flag_no_rotate;
gint rotation = 0;
- annot = annots->getAnnot(i);
flag_no_rotate = annot->getFlags() & Annot::flagNoRotate;
/* Create the mapping */
diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index 60c023d4..366e7de1 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -1087,8 +1087,8 @@ void AnnotAppearance::removeStream(Ref refToStream)
continue;
}
Annots *annots = page->getAnnots();
- for (int i = 0; i < annots->getNumAnnots(); ++i) {
- AnnotAppearance *annotAp = annots->getAnnot(i)->getAppearStreams();
+ for (Annot *annot : annots->getAnnots()) {
+ AnnotAppearance *annotAp = annot->getAppearStreams();
if (annotAp && annotAp != this && annotAp->referencesStream(refToStream)) {
return; // Another annotation points to the stream -> Don't delete it
}
diff --git a/poppler/Annot.h b/poppler/Annot.h
index 9ae274df..8d1f18bc 100644
--- a/poppler/Annot.h
+++ b/poppler/Annot.h
@@ -1766,9 +1766,8 @@ public:
Annots(const Annots &) = delete;
Annots &operator=(const Annots &) = delete;
- // Iterate through list of annotations.
- int getNumAnnots() const { return annots.size(); }
- Annot *getAnnot(int i) { return annots[i]; }
+ const std::vector<Annot *> &getAnnots() { return annots; }
+
void appendAnnot(Annot *annot);
bool removeAnnot(Annot *annot);
diff --git a/poppler/FontInfo.cc b/poppler/FontInfo.cc
index 23425f61..309ec6d3 100644
--- a/poppler/FontInfo.cc
+++ b/poppler/FontInfo.cc
@@ -82,8 +82,8 @@ std::vector<FontInfo *> FontInfoScanner::scan(int nPages)
delete resDict;
}
annots = page->getAnnots();
- for (int i = 0; i < annots->getNumAnnots(); ++i) {
- Object obj1 = annots->getAnnot(i)->getAppearanceResDict();
+ for (Annot *annot : annots->getAnnots()) {
+ Object obj1 = annot->getAppearanceResDict();
if (obj1.isDict()) {
scanFonts(xrefA.get(), obj1.getDict(), &result);
}
diff --git a/poppler/Form.cc b/poppler/Form.cc
index 97b5be0e..b88972ae 100644
--- a/poppler/Form.cc
+++ b/poppler/Form.cc
@@ -2732,14 +2732,13 @@ FormPageWidgets::FormPageWidgets(Annots *annots, unsigned int page, Form *form)
widgets = nullptr;
size = 0;
- if (annots && annots->getNumAnnots() > 0 && form) {
- size = annots->getNumAnnots();
+ if (annots && !annots->getAnnots().empty() > 0 && form) {
+ size = annots->getAnnots().size();
widgets = (FormWidget **)greallocn(widgets, size, sizeof(FormWidget *));
/* For each entry in the page 'Annots' dict, try to find
a matching form field */
- for (int i = 0; i < size; ++i) {
- Annot *annot = annots->getAnnot(i);
+ for (Annot *annot : annots->getAnnots()) {
if (annot->getType() != Annot::typeWidget) {
continue;
diff --git a/poppler/JSInfo.cc b/poppler/JSInfo.cc
index bc6992c2..29fa7073 100644
--- a/poppler/JSInfo.cc
+++ b/poppler/JSInfo.cc
@@ -194,15 +194,15 @@ void JSInfo::scan(int nPages)
}
// annotation actions (links, screen, widget)
annots = page->getAnnots();
- for (int i = 0; i < annots->getNumAnnots(); ++i) {
- if (annots->getAnnot(i)->getType() == Annot::typeLink) {
- AnnotLink *annot = static_cast<AnnotLink *>(annots->getAnnot(i));
+ for (Annot *a : annots->getAnnots()) {
+ if (a->getType() == Annot::typeLink) {
+ AnnotLink *annot = static_cast<AnnotLink *>(a);
scanLinkAction(annot->getAction(), "Link Annotation Activated");
if (onlyFirstJS && hasJS) {
return;
}
- } else if (annots->getAnnot(i)->getType() == Annot::typeScreen) {
- AnnotScreen *annot = static_cast<AnnotScreen *>(annots->getAnnot(i));
+ } else if (a->getType() == Annot::typeScreen) {
+ AnnotScreen *annot = static_cast<AnnotScreen *>(a);
scanLinkAction(annot->getAction(), "Screen Annotation Activated");
scanLinkAction(annot->getAdditionalAction(Annot::actionCursorEntering).get(), "Screen Annotation Cursor Enter");
scanLinkAction(annot->getAdditionalAction(Annot::actionCursorLeaving).get(), "Screen Annotation Cursor Leave");
@@ -218,8 +218,8 @@ void JSInfo::scan(int nPages)
if (onlyFirstJS && hasJS) {
return;
}
- } else if (annots->getAnnot(i)->getType() == Annot::typeWidget) {
- AnnotWidget *annot = static_cast<AnnotWidget *>(annots->getAnnot(i));
+ } else if (a->getType() == Annot::typeWidget) {
+ AnnotWidget *annot = static_cast<AnnotWidget *>(a);
scanLinkAction(annot->getAction(), "Widget Annotation Activated");
scanLinkAction(annot->getAdditionalAction(Annot::actionCursorEntering).get(), "Widget Annotation Cursor Enter");
scanLinkAction(annot->getAdditionalAction(Annot::actionCursorLeaving).get(), "Widget Annotation Cursor Leave");
diff --git a/poppler/Link.cc b/poppler/Link.cc
index b2e48cbc..8aca0b96 100644
--- a/poppler/Link.cc
+++ b/poppler/Link.cc
@@ -890,8 +890,7 @@ Links::Links(Annots *annots)
return;
}
- for (int i = 0; i < annots->getNumAnnots(); ++i) {
- Annot *annot = annots->getAnnot(i);
+ for (Annot *annot : annots->getAnnots()) {
if (annot->getType() != Annot::typeLink) {
continue;
diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index 111b4728..9db62299 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -1745,8 +1745,8 @@ void PSOutputDev::writeDocSetup(Catalog *catalog, const std::vector<int> &pageLi
setupResources(resDict);
}
annots = page->getAnnots();
- for (int i = 0; i < annots->getNumAnnots(); ++i) {
- Object obj1 = annots->getAnnot(i)->getAppearanceResDict();
+ for (Annot *annot : annots->getAnnots()) {
+ Object obj1 = annot->getAppearanceResDict();
if (obj1.isDict()) {
setupResources(obj1.getDict());
}
diff --git a/poppler/Page.cc b/poppler/Page.cc
index aa23c3e1..c256d391 100644
--- a/poppler/Page.cc
+++ b/poppler/Page.cc
@@ -367,16 +367,9 @@ void Page::replaceXRef(XRef *xrefA)
/* Loads standalone fields into Page, should be called once per page only */
void Page::loadStandaloneFields(Annots *annotations, Form *form)
{
- const int numAnnots = annotations ? annotations->getNumAnnots() : 0;
-
- if (numAnnots < 1) {
- return;
- }
-
/* Look for standalone annots, identified by being: 1) of type Widget
* 2) not referenced from the Catalog's Form Field array */
- for (int i = 0; i < numAnnots; ++i) {
- Annot *annot = annotations->getAnnot(i);
+ for (Annot *annot : annots->getAnnots()) {
if (annot->getType() != Annot::typeWidget || !annot->getHasRef()) {
continue;
@@ -564,7 +557,6 @@ void Page::displaySlice(OutputDev *out, double hDPI, double vDPI, int rotate, bo
{
Gfx *gfx;
Annots *annotList;
- int i;
if (!out->checkPageSlice(this, hDPI, vDPI, rotate, useMediaBox, crop, sliceX, sliceY, sliceW, sliceH, printing, abortCheckCbk, abortCheckCbkData, annotDisplayDecideCbk, annotDisplayDecideCbkData)) {
return;
@@ -591,14 +583,13 @@ void Page::displaySlice(OutputDev *out, double hDPI, double vDPI, int rotate, bo
// draw annotations
annotList = getAnnots();
- if (annotList->getNumAnnots() > 0) {
+ if (!annotList->getAnnots().empty()) {
if (globalParams->getPrintCommands()) {
printf("***** Annotations\n");
}
- for (i = 0; i < annotList->getNumAnnots(); ++i) {
- Annot *annot = annotList->getAnnot(i);
+ for (Annot *annot : annots->getAnnots()) {
if ((annotDisplayDecideCbk && (*annotDisplayDecideCbk)(annot, annotDisplayDecideCbkData)) || !annotDisplayDecideCbk) {
- annotList->getAnnot(i)->draw(gfx, printing);
+ annot->draw(gfx, printing);
}
}
out->dump();
diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc
index ab456734..cdf25da1 100644
--- a/qt5/src/poppler-annotation.cc
+++ b/qt5/src/poppler-annotation.cc
@@ -438,10 +438,6 @@ AnnotPath *AnnotationPrivate::toAnnotPath(const QLinkedList<QPointF> &list) cons
QList<Annotation *> AnnotationPrivate::findAnnotations(::Page *pdfPage, DocumentData *doc, const QSet<Annotation::SubType> &subtypes, int parentID)
{
Annots *annots = pdfPage->getAnnots();
- const uint numAnnotations = annots->getNumAnnots();
- if (numAnnotations == 0) {
- return QList<Annotation *>();
- }
const bool wantTextAnnotations = subtypes.isEmpty() || subtypes.contains(Annotation::AText);
const bool wantLineAnnotations = subtypes.isEmpty() || subtypes.contains(Annotation::ALine);
@@ -459,11 +455,9 @@ QList<Annotation *> AnnotationPrivate::findAnnotations(::Page *pdfPage, Document
// Create Annotation objects and tie to their native Annot
QList<Annotation *> res;
- for (uint k = 0; k < numAnnotations; k++) {
- // get the j-th annotation
- Annot *ann = annots->getAnnot(k);
+ for (Annot *ann : annots->getAnnots()) {
if (!ann) {
- error(errInternal, -1, "Annot {0:ud} is null", k);
+ error(errInternal, -1, "Annot is null");
continue;
}
diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc
index b92b76ba..5770be6f 100644
--- a/qt6/src/poppler-annotation.cc
+++ b/qt6/src/poppler-annotation.cc
@@ -360,10 +360,6 @@ AnnotPath *AnnotationPrivate::toAnnotPath(const QVector<QPointF> &list) const
std::vector<std::unique_ptr<Annotation>> AnnotationPrivate::findAnnotations(::Page *pdfPage, DocumentData *doc, const QSet<Annotation::SubType> &subtypes, int parentID)
{
Annots *annots = pdfPage->getAnnots();
- const uint numAnnotations = annots->getNumAnnots();
- if (numAnnotations == 0) {
- return std::vector<std::unique_ptr<Annotation>>();
- }
const bool wantTextAnnotations = subtypes.isEmpty() || subtypes.contains(Annotation::AText);
const bool wantLineAnnotations = subtypes.isEmpty() || subtypes.contains(Annotation::ALine);
@@ -381,11 +377,9 @@ std::vector<std::unique_ptr<Annotation>> AnnotationPrivate::findAnnotations(::Pa
// Create Annotation objects and tie to their native Annot
std::vector<std::unique_ptr<Annotation>> res;
- for (uint k = 0; k < numAnnotations; k++) {
- // get the j-th annotation
- Annot *ann = annots->getAnnot(k);
+ for (Annot *ann : annots->getAnnots()) {
if (!ann) {
- error(errInternal, -1, "Annot {0:ud} is null", k);
+ error(errInternal, -1, "Annot is null");
continue;
}
diff --git a/utils/pdfdetach.cc b/utils/pdfdetach.cc
index 61c3728f..247c2c13 100644
--- a/utils/pdfdetach.cc
+++ b/utils/pdfdetach.cc
@@ -85,7 +85,6 @@ int main(int argc, char *argv[])
int nFiles, nPages, n, i, j;
Page *page;
Annots *annots;
- Annot *annot;
const GooString *s1;
Unicode u;
bool isUnicode;
@@ -151,8 +150,7 @@ int main(int argc, char *argv[])
break;
}
- for (j = 0; j < annots->getNumAnnots(); ++j) {
- annot = annots->getAnnot(j);
+ for (Annot *annot : annots->getAnnots()) {
if (annot->getType() != Annot::typeFileAttachment) {
continue;
}
More information about the poppler
mailing list