poppler/Annot.cc | 16 ++++++++-------- poppler/Annot.h | 4 ++-- poppler/AnnotStampImageHelper.h | 5 ++--- qt5/src/poppler-annotation.cc | 10 +++++----- qt5/src/poppler-annotation.h | 8 ++++++++ qt6/src/poppler-annotation.cc | 10 +++++----- qt6/src/poppler-annotation.h | 8 ++++++++ 7 files changed, 38 insertions(+), 23 deletions(-)
New commits: commit a1901ee99bf46beac43d129bb3f6ad2f9ed758af Author: Albert Astals Cid <[email protected]> Date: Sun Sep 12 22:29:40 2021 +0200 Misc annotation stamp improvements Mark a few variables/functions as const Remove unused function from AnnotStampImageHelper.h Remove unneded GooString from AnnotStamp::generateStampAppearance Set pointer to null after delete in AnnotStamp::clearCustomImage only invalidate appearance in AnnotStamp::clearCustomImage if we did something Add since markers to the new public API diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 89b46890..84c8d474 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -1855,12 +1855,12 @@ double AnnotAppearanceBuilder::lineEndingXExtendBBox(AnnotLineEndingStyle ending return 0; } -Object Annot::createForm(const GooString *appearBuf, double *bbox, bool transparencyGroup, Dict *resDict) +Object Annot::createForm(const GooString *appearBuf, const double *bbox, bool transparencyGroup, Dict *resDict) { return createForm(appearBuf, bbox, transparencyGroup, resDict ? Object(resDict) : Object()); } -Object Annot::createForm(const GooString *appearBuf, double *bbox, bool transparencyGroup, Object &&resDictObject) +Object Annot::createForm(const GooString *appearBuf, const double *bbox, bool transparencyGroup, Object &&resDictObject) { Dict *appearDict = new Dict(doc->getXRef()); appearDict->set("Length", Object(appearBuf->getLength())); @@ -5404,21 +5404,20 @@ void AnnotStamp::initialize(PDFDoc *docA, Dict *dict) void AnnotStamp::generateStampAppearance() { Ref imgRef = stampImageHelper->getRef(); - std::string imgStrName = "X" + std::to_string(imgRef.num); - GooString imgRefName(imgStrName); + const std::string imgStrName = "X" + std::to_string(imgRef.num); AnnotAppearanceBuilder appearBuilder; appearBuilder.append("q\n"); appearBuilder.append("/GS0 gs\n"); appearBuilder.appendf("{0:.3f} 0 0 {1:.3f} 0 0 cm\n", rect->x2 - rect->x1, rect->y2 - rect->y1); appearBuilder.append("/"); - appearBuilder.append(imgRefName.c_str()); + appearBuilder.append(imgStrName.c_str()); appearBuilder.append(" Do\n"); appearBuilder.append("Q\n"); - Dict *resDict = createResourcesDict(imgRefName.c_str(), Object(imgRef), "GS0", opacity, nullptr); + Dict *resDict = createResourcesDict(imgStrName.c_str(), Object(imgRef), "GS0", opacity, nullptr); - double bboxArray[4] = { 0, 0, rect->x2 - rect->x1, rect->y2 - rect->y1 }; + const double bboxArray[4] = { 0, 0, rect->x2 - rect->x1, rect->y2 - rect->y1 }; const GooString *appearBuf = appearBuilder.buffer(); appearance = createForm(appearBuf, bboxArray, false, resDict); } @@ -5485,8 +5484,9 @@ void AnnotStamp::clearCustomImage() if (stampImageHelper != nullptr) { stampImageHelper->removeAnnotStampImageObject(); delete stampImageHelper; + stampImageHelper = nullptr; + invalidateAppearance(); } - invalidateAppearance(); } //------------------------------------------------------------------------ diff --git a/poppler/Annot.h b/poppler/Annot.h index 9e399f19..788d6a00 100644 --- a/poppler/Annot.h +++ b/poppler/Annot.h @@ -758,8 +758,8 @@ private: protected: virtual ~Annot(); virtual void removeReferencedObjects(); // Called by Page::removeAnnot - Object createForm(const GooString *appearBuf, double *bbox, bool transparencyGroup, Dict *resDict); - Object createForm(const GooString *appearBuf, double *bbox, bool transparencyGroup, Object &&resDictObject); // overload to support incRef/decRef + Object createForm(const GooString *appearBuf, const double *bbox, bool transparencyGroup, Dict *resDict); + Object createForm(const GooString *appearBuf, const double *bbox, bool transparencyGroup, Object &&resDictObject); // overload to support incRef/decRef Dict *createResourcesDict(const char *formName, Object &&formStream, const char *stateName, double opacity, const char *blendMode); bool isVisible(bool printing); int getRotation() const; diff --git a/poppler/AnnotStampImageHelper.h b/poppler/AnnotStampImageHelper.h index 75313a20..ebe6e919 100644 --- a/poppler/AnnotStampImageHelper.h +++ b/poppler/AnnotStampImageHelper.h @@ -3,6 +3,7 @@ // AnnotStampImageHelper.h // // Copyright (C) 2021 Mahmoud Ahmed Khalil <[email protected]> +// Copyright (C) 2021 Albert Astals Cid <[email protected]> // // Licensed under GPLv2 or later // @@ -41,15 +42,13 @@ public: ~AnnotStampImageHelper() { } // Returns the ref to the created Image XObject - Ref getRef() { return ref; } + Ref getRef() const { return ref; } // Returns the width of the image int getWidth() const { return width; } // Returns the height of the image int getHeight() const { return height; } - Object &getAnnotStampImageHelperObject() { return imgObj; } - // Removes the created Image XObject as well as its soft mask from the XRef Table void removeAnnotStampImageObject(); diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc index 35d3020a..5c35e87f 100644 --- a/qt5/src/poppler-annotation.cc +++ b/qt5/src/poppler-annotation.cc @@ -1,5 +1,5 @@ /* poppler-annotation.cc: qt interface to poppler - * Copyright (C) 2006, 2009, 2012-2015, 2018-2020 Albert Astals Cid <[email protected]> + * Copyright (C) 2006, 2009, 2012-2015, 2018-2021 Albert Astals Cid <[email protected]> * Copyright (C) 2006, 2008, 2010 Pino Toscano <[email protected]> * Copyright (C) 2012, Guillermo A. Amaral B. <[email protected]> * Copyright (C) 2012-2014 Fabio D'Urso <[email protected]> @@ -154,8 +154,8 @@ AnnotationPrivate::AnnotationPrivate() : flags(0), revisionScope(Annotation::Roo void getRawDataFromQImage(const QImage &qimg, int bitsPerPixel, QByteArray *data, QByteArray *sMaskData) { - int height = qimg.height(); - int width = qimg.width(); + const int height = qimg.height(); + const int width = qimg.width(); switch (bitsPerPixel) { case 1: @@ -3256,8 +3256,8 @@ AnnotStampImageHelper *StampAnnotationPrivate::convertQImageToAnnotStampImageHel QByteArray data; QByteArray sMaskData; - int width = convertedQImage.width(); - int height = convertedQImage.height(); + const int width = convertedQImage.width(); + const int height = convertedQImage.height(); int bitsPerComponent = 1; ColorSpace colorSpace = ColorSpace::DeviceGray; diff --git a/qt5/src/poppler-annotation.h b/qt5/src/poppler-annotation.h index d98d9cc7..c8c4c6ac 100644 --- a/qt5/src/poppler-annotation.h +++ b/qt5/src/poppler-annotation.h @@ -110,6 +110,8 @@ public: * This class wraps Poppler's Object implementing the appearance stream * for the calling annotation. It can be used to preserve the current * Appearance Stream for the calling annotation. + * + * \since 21.10.0 */ class POPPLER_QT5_EXPORT AnnotationAppearance { @@ -450,11 +452,15 @@ public: /** * Returns the current appearance stream of this annotation. + * + * \since 21.10.0 */ std::unique_ptr<AnnotationAppearance> annotationAppearance() const; /** * Sets the annotation's appearance stream with the @p annotationAppearance. + * + * \since 21.10.0 */ void setAnnotationAppearance(const AnnotationAppearance &annotationAppearance); @@ -817,6 +823,8 @@ public: /** Set a custom icon for this stamp annotation. + + \since 21.10.0 */ void setStampCustomImage(const QImage &image); diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc index 167a0d8e..5c9df939 100644 --- a/qt6/src/poppler-annotation.cc +++ b/qt6/src/poppler-annotation.cc @@ -1,5 +1,5 @@ /* poppler-annotation.cc: qt interface to poppler - * Copyright (C) 2006, 2009, 2012-2015, 2018-2020 Albert Astals Cid <[email protected]> + * Copyright (C) 2006, 2009, 2012-2015, 2018-2021 Albert Astals Cid <[email protected]> * Copyright (C) 2006, 2008, 2010 Pino Toscano <[email protected]> * Copyright (C) 2012, Guillermo A. Amaral B. <[email protected]> * Copyright (C) 2012-2014 Fabio D'Urso <[email protected]> @@ -90,8 +90,8 @@ AnnotationPrivate::AnnotationPrivate() : revisionScope(Annotation::Root), revisi void getRawDataFromQImage(const QImage &qimg, int bitsPerPixel, QByteArray *data, QByteArray *sMaskData) { - int height = qimg.height(); - int width = qimg.width(); + const int height = qimg.height(); + const int width = qimg.width(); switch (bitsPerPixel) { case 1: @@ -2642,8 +2642,8 @@ AnnotStampImageHelper *StampAnnotationPrivate::convertQImageToAnnotStampImageHel QByteArray data; QByteArray sMaskData; - int width = convertedQImage.width(); - int height = convertedQImage.height(); + const int width = convertedQImage.width(); + const int height = convertedQImage.height(); int bitsPerComponent = 1; ColorSpace colorSpace = ColorSpace::DeviceGray; diff --git a/qt6/src/poppler-annotation.h b/qt6/src/poppler-annotation.h index 5039e6e0..644c9167 100644 --- a/qt6/src/poppler-annotation.h +++ b/qt6/src/poppler-annotation.h @@ -81,6 +81,8 @@ class Page; * This class wraps Poppler's Object implementing the appearance stream * for the calling annotation. It can be used to preserve the current * Appearance Stream for the calling annotation. + * + * \since 21.10.0 */ class POPPLER_QT6_EXPORT AnnotationAppearance { @@ -406,11 +408,15 @@ public: /** * Returns the current appearance stream of this annotation. + * + * \since 21.10.0 */ std::unique_ptr<AnnotationAppearance> annotationAppearance() const; /** * Sets the annotation's appearance stream with the @p annotationAppearance. + * + * \since 21.10.0 */ void setAnnotationAppearance(const AnnotationAppearance &annotationAppearance); @@ -753,6 +759,8 @@ public: /** Set a custom icon for this stamp annotation. + + \since 21.10.0 */ void setStampCustomImage(const QImage &image);
