[poppler] poppler/Annot.cc poppler/Annot.h poppler/CairoOutputDev.cc poppler/Gfx.cc poppler/GfxState.cc poppler/GfxState.h poppler/PreScanOutputDev.cc poppler/PSOutputDev.cc poppler/SplashOutputDev.cc qt5/src qt6/src
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 9 20:29:42 UTC 2022
poppler/Annot.cc | 73 ++++++++++--------------------------------
poppler/Annot.h | 6 +--
poppler/CairoOutputDev.cc | 8 +---
poppler/Gfx.cc | 33 +++++-------------
poppler/GfxState.cc | 16 +--------
poppler/GfxState.h | 11 ++----
poppler/PSOutputDev.cc | 8 +---
poppler/PreScanOutputDev.cc | 6 +--
poppler/SplashOutputDev.cc | 9 +----
qt5/src/QPainterOutputDev.cc | 10 ++---
qt5/src/poppler-annotation.cc | 15 ++++----
qt6/src/QPainterOutputDev.cc | 10 ++---
qt6/src/poppler-annotation.cc | 11 +-----
13 files changed, 67 insertions(+), 149 deletions(-)
New commits:
commit c9c5eb782a8820f328dc32bcaf74d7f0b2cb6d7a
Author: Oliver Sander <oliver.sander at tu-dresden.de>
Date: Sun Aug 7 10:49:00 2022 +0200
Use std::vector to store dash patterns
Makes the code more readable.
diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index 7e4963ec..c617461a 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -515,8 +515,6 @@ AnnotQuadrilaterals::AnnotQuadrilateral::AnnotQuadrilateral(double x1, double y1
AnnotBorder::AnnotBorder()
{
width = 1;
- dashLength = 0;
- dash = nullptr;
style = borderSolid;
}
@@ -524,7 +522,7 @@ bool AnnotBorder::parseDashArray(Object *dashObj)
{
bool correct = true;
const int tempLength = dashObj->arrayGetLength();
- double *tempDash = (double *)gmallocn(tempLength, sizeof(double));
+ std::vector<double> tempDash(tempLength);
// TODO: check not all zero (Line Dash Pattern Page 217 PDF 8.1)
for (int i = 0; i < tempLength && i < DASH_LIMIT && correct; i++) {
@@ -539,22 +537,14 @@ bool AnnotBorder::parseDashArray(Object *dashObj)
}
if (correct) {
- dashLength = tempLength;
- dash = tempDash;
+ dash = std::move(tempDash);
style = borderDashed;
- } else {
- gfree(tempDash);
}
return correct;
}
-AnnotBorder::~AnnotBorder()
-{
- if (dash) {
- gfree(dash);
- }
-}
+AnnotBorder::~AnnotBorder() = default;
//------------------------------------------------------------------------
// AnnotBorderArray
@@ -618,11 +608,7 @@ std::unique_ptr<AnnotBorder> AnnotBorderArray::copy() const
AnnotBorderArray *res = new AnnotBorderArray();
res->type = type;
res->width = width;
- res->dashLength = dashLength;
- if (dashLength > 0) {
- res->dash = (double *)gmallocn(dashLength, sizeof(double));
- memcpy(res->dash, dash, dashLength * sizeof(double));
- }
+ res->dash = dash;
res->style = style;
res->horizontalCorner = horizontalCorner;
res->verticalCorner = verticalCorner;
@@ -636,11 +622,11 @@ Object AnnotBorderArray::writeToObject(XRef *xref) const
borderArray->add(Object(verticalCorner));
borderArray->add(Object(width));
- if (dashLength > 0) {
+ if (dash.size() > 0) {
Array *a = new Array(xref);
- for (int i = 0; i < dashLength; i++) {
- a->add(Object(dash[i]));
+ for (double d : dash) {
+ a->add(Object(d));
}
borderArray->add(Object(a));
@@ -686,14 +672,8 @@ AnnotBorderBS::AnnotBorderBS(Dict *dict)
// Border dash style
if (style == borderDashed) {
obj1 = dict->lookup("D");
- if (obj1.isArray()) {
- parseDashArray(&obj1);
- }
-
- if (!dash) {
- dashLength = 1;
- dash = (double *)gmallocn(dashLength, sizeof(double));
- dash[0] = 3;
+ if (!obj1.isArray() || !parseDashArray(&obj1)) {
+ dash = { 3 };
}
}
}
@@ -721,11 +701,7 @@ std::unique_ptr<AnnotBorder> AnnotBorderBS::copy() const
AnnotBorderBS *res = new AnnotBorderBS();
res->type = type;
res->width = width;
- res->dashLength = dashLength;
- if (dashLength > 0) {
- res->dash = (double *)gmallocn(dashLength, sizeof(double));
- memcpy(res->dash, dash, dashLength * sizeof(double));
- }
+ res->dash = dash;
res->style = style;
return std::unique_ptr<AnnotBorder>(res);
}
@@ -735,11 +711,11 @@ Object AnnotBorderBS::writeToObject(XRef *xref) const
Dict *dict = new Dict(xref);
dict->set("W", Object(width));
dict->set("S", Object(objName, getStyleName()));
- if (style == borderDashed && dashLength > 0) {
+ if (style == borderDashed && dash.size() > 0) {
Array *a = new Array(xref);
- for (int i = 0; i < dashLength; i++) {
- a->add(Object(dash[i]));
+ for (double d : dash) {
+ a->add(Object(d));
}
dict->set("D", Object(a));
}
@@ -1736,16 +1712,11 @@ void AnnotAppearanceBuilder::setTextFont(const Object &fontName, double fontSize
void AnnotAppearanceBuilder::setLineStyleForBorder(const AnnotBorder *border)
{
- int i, dashLength;
- double *dash;
-
switch (border->getStyle()) {
case AnnotBorder::borderDashed:
appearBuf->append("[");
- dashLength = border->getDashLength();
- dash = border->getDash();
- for (i = 0; i < dashLength; ++i) {
- appearBuf->appendf(" {0:.2f}", dash[i]);
+ for (double dash : border->getDash()) {
+ appearBuf->appendf(" {0:.2f}", dash);
}
appearBuf->append(" ] 0 d\n");
break;
@@ -5026,8 +4997,6 @@ bool AnnotAppearanceBuilder::drawListBox(const FormFieldChoice *fieldChoice, con
void AnnotAppearanceBuilder::drawFieldBorder(const FormField *field, const AnnotBorder *border, const AnnotAppearanceCharacs *appearCharacs, const PDFRectangle *rect)
{
- int dashLength;
- double *dash;
AnnotColor adjustedColor;
const double w = border->getWidth();
@@ -5049,10 +5018,8 @@ void AnnotAppearanceBuilder::drawFieldBorder(const FormField *field, const Annot
switch (border->getStyle()) {
case AnnotBorder::borderDashed:
appearBuf->append("[");
- dashLength = border->getDashLength();
- dash = border->getDash();
- for (int i = 0; i < dashLength; ++i) {
- appearBuf->appendf(" {0:.2f}", dash[i]);
+ for (double dash : border->getDash()) {
+ appearBuf->appendf(" {0:.2f}", dash);
}
appearBuf->append("] 0 d\n");
// fallthrough
@@ -5081,10 +5048,8 @@ void AnnotAppearanceBuilder::drawFieldBorder(const FormField *field, const Annot
switch (border->getStyle()) {
case AnnotBorder::borderDashed:
appearBuf->append("[");
- dashLength = border->getDashLength();
- dash = border->getDash();
- for (int i = 0; i < dashLength; ++i) {
- appearBuf->appendf(" {0:.2f}", dash[i]);
+ for (double dash : border->getDash()) {
+ appearBuf->appendf(" {0:.2f}", dash);
}
appearBuf->append("] 0 d\n");
// fallthrough
diff --git a/poppler/Annot.h b/poppler/Annot.h
index 15dbfe81..819877d4 100644
--- a/poppler/Annot.h
+++ b/poppler/Annot.h
@@ -281,8 +281,7 @@ public:
virtual AnnotBorderType getType() const = 0;
virtual double getWidth() const { return width; }
- virtual int getDashLength() const { return dashLength; }
- virtual double *getDash() const { return dash; }
+ virtual const std::vector<double> &getDash() const { return dash; }
virtual AnnotBorderStyle getStyle() const { return style; }
virtual Object writeToObject(XRef *xref) const = 0;
@@ -296,8 +295,7 @@ protected:
AnnotBorderType type;
double width;
static const int DASH_LIMIT = 10; // implementation note 82 in Appendix H.
- int dashLength;
- double *dash;
+ std::vector<double> dash;
AnnotBorderStyle style;
};
diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc
index ef3be8e2..b402cc8b 100644
--- a/poppler/CairoOutputDev.cc
+++ b/poppler/CairoOutputDev.cc
@@ -479,14 +479,12 @@ void CairoOutputDev::updateCTM(GfxState *state, double m11, double m12, double m
void CairoOutputDev::updateLineDash(GfxState *state)
{
- double *dashPattern;
- int dashLength;
double dashStart;
- state->getLineDash(&dashPattern, &dashLength, &dashStart);
- cairo_set_dash(cairo, dashPattern, dashLength, dashStart);
+ const std::vector<double> &dashPattern = state->getLineDash(&dashStart);
+ cairo_set_dash(cairo, dashPattern.data(), dashPattern.size(), dashStart);
if (cairo_shape) {
- cairo_set_dash(cairo_shape, dashPattern, dashLength, dashStart);
+ cairo_set_dash(cairo_shape, dashPattern.data(), dashPattern.size(), dashStart);
}
}
diff --git a/poppler/Gfx.cc b/poppler/Gfx.cc
index 16f19443..17202a07 100644
--- a/poppler/Gfx.cc
+++ b/poppler/Gfx.cc
@@ -887,22 +887,13 @@ void Gfx::opConcat(Object args[], int numArgs)
void Gfx::opSetDash(Object args[], int numArgs)
{
- Array *a;
- int length;
- double *dash;
- int i;
-
- a = args[0].getArray();
- length = a->getLength();
- if (length == 0) {
- dash = nullptr;
- } else {
- dash = (double *)gmallocn(length, sizeof(double));
- for (i = 0; i < length; ++i) {
- dash[i] = a->get(i).getNumWithDefaultValue(0);
- }
+ const Array *a = args[0].getArray();
+ int length = a->getLength();
+ std::vector<double> dash(length);
+ for (int i = 0; i < length; ++i) {
+ dash[i] = a->get(i).getNumWithDefaultValue(0);
}
- state->setLineDash(dash, length, args[1].getNum());
+ state->setLineDash(std::move(dash), args[1].getNum());
out->updateLineDash(state);
}
@@ -5146,8 +5137,6 @@ void Gfx::drawAnnot(Object *str, AnnotBorder *border, AnnotColor *aColor, double
double x, y, sx, sy, tx, ty;
double m[6], bbox[4];
GfxColor color;
- double *dash, *dash2;
- int dashLength;
int i;
// this function assumes that we are in the default user space,
@@ -5322,12 +5311,10 @@ void Gfx::drawAnnot(Object *str, AnnotBorder *border, AnnotColor *aColor, double
out->updateStrokeColor(state);
state->setLineWidth(border->getWidth());
out->updateLineWidth(state);
- dashLength = border->getDashLength();
- dash = border->getDash();
- if (border->getStyle() == AnnotBorder::borderDashed && dashLength > 0) {
- dash2 = (double *)gmallocn(dashLength, sizeof(double));
- memcpy(dash2, dash, dashLength * sizeof(double));
- state->setLineDash(dash2, dashLength, 0);
+ const std::vector<double> &dash = border->getDash();
+ if (border->getStyle() == AnnotBorder::borderDashed && dash.size() > 0) {
+ std::vector<double> dash2 = dash;
+ state->setLineDash(std::move(dash2), 0);
out->updateLineDash(state);
}
//~ this doesn't currently handle the beveled and engraved styles
diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc
index 1c5e5c8b..97421919 100644
--- a/poppler/GfxState.cc
+++ b/poppler/GfxState.cc
@@ -6504,8 +6504,6 @@ GfxState::GfxState(double hDPIA, double vDPIA, const PDFRectangle *pageBox, int
transfer[0] = transfer[1] = transfer[2] = transfer[3] = nullptr;
lineWidth = 1;
- lineDash = nullptr;
- lineDashLength = 0;
lineDashStart = 0;
flatness = 1;
lineJoin = 0;
@@ -6587,7 +6585,6 @@ GfxState::~GfxState()
delete transfer[i];
}
}
- gfree(lineDash);
if (path) {
// this gets set to NULL by restore()
delete path;
@@ -6646,12 +6643,7 @@ GfxState::GfxState(const GfxState *state, bool copyPath)
}
}
lineWidth = state->lineWidth;
- lineDashLength = state->lineDashLength;
- lineDash = nullptr;
- if (lineDashLength > 0) {
- lineDash = (double *)gmallocn(lineDashLength, sizeof(double));
- memcpy(lineDash, state->lineDash, lineDashLength * sizeof(double));
- }
+ lineDash = state->lineDash;
lineDashStart = state->lineDashStart;
flatness = state->flatness;
lineJoin = state->lineJoin;
@@ -6973,13 +6965,9 @@ void GfxState::setTransfer(Function **funcs)
}
}
-void GfxState::setLineDash(double *dash, int length, double start)
+void GfxState::setLineDash(std::vector<double> &&dash, double start)
{
- if (lineDash) {
- gfree(lineDash);
- }
lineDash = dash;
- lineDashLength = length;
lineDashStart = start;
}
diff --git a/poppler/GfxState.h b/poppler/GfxState.h
index 92db8ab2..cdbca9ff 100644
--- a/poppler/GfxState.h
+++ b/poppler/GfxState.h
@@ -44,6 +44,7 @@
#include <cassert>
#include <map>
#include <memory>
+#include <vector>
class Array;
class Gfx;
@@ -1502,11 +1503,10 @@ public:
int getOverprintMode() const { return overprintMode; }
Function **getTransfer() { return transfer; }
double getLineWidth() const { return lineWidth; }
- void getLineDash(double **dash, int *length, double *start)
+ const std::vector<double> &getLineDash(double *start)
{
- *dash = lineDash;
- *length = lineDashLength;
*start = lineDashStart;
+ return lineDash;
}
int getFlatness() const { return flatness; }
int getLineJoin() const { return lineJoin; }
@@ -1588,7 +1588,7 @@ public:
void setOverprintMode(int op) { overprintMode = op; }
void setTransfer(Function **funcs);
void setLineWidth(double width) { lineWidth = width; }
- void setLineDash(double *dash, int length, double start);
+ void setLineDash(std::vector<double> &&dash, double start);
void setFlatness(int flatness1) { flatness = flatness1; }
void setLineJoin(int lineJoin1) { lineJoin = lineJoin1; }
void setLineCap(int lineCap1) { lineCap = lineCap1; }
@@ -1750,8 +1750,7 @@ private:
// R,G,B,gray functions)
double lineWidth; // line width
- double *lineDash; // line dash
- int lineDashLength;
+ std::vector<double> lineDash; // line dash
double lineDashStart;
int flatness; // curve flatness
int lineJoin; // line join style
diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index 136b06fb..66a49f2b 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -3919,14 +3919,12 @@ void PSOutputDev::updateCTM(GfxState *state, double m11, double m12, double m21,
void PSOutputDev::updateLineDash(GfxState *state)
{
- double *dash;
double start;
- int length, i;
- state->getLineDash(&dash, &length, &start);
+ const std::vector<double> &dash = state->getLineDash(&start);
writePS("[");
- for (i = 0; i < length; ++i) {
- writePSFmt("{0:.6g}{1:w}", dash[i] < 0 ? 0 : dash[i], (i == length - 1) ? 0 : 1);
+ for (std::vector<double>::size_type i = 0; i < dash.size(); ++i) {
+ writePSFmt("{0:.6g}{1:w}", dash[i] < 0 ? 0 : dash[i], (i == dash.size() - 1) ? 0 : 1);
}
writePSFmt("] {0:.6g} d\n", start);
}
diff --git a/poppler/PreScanOutputDev.cc b/poppler/PreScanOutputDev.cc
index 6b71e9d0..c3ddc5c3 100644
--- a/poppler/PreScanOutputDev.cc
+++ b/poppler/PreScanOutputDev.cc
@@ -53,13 +53,11 @@ void PreScanOutputDev::endPage() { }
void PreScanOutputDev::stroke(GfxState *state)
{
- double *dash;
- int dashLen;
double dashStart;
check(state->getStrokeColorSpace(), state->getStrokeColor(), state->getStrokeOpacity(), state->getBlendMode());
- state->getLineDash(&dash, &dashLen, &dashStart);
- if (dashLen != 0) {
+ const std::vector<double> &dash = state->getLineDash(&dashStart);
+ if (dash.size() != 0) {
gdi = false;
}
}
diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
index ac96db02..58e27896 100644
--- a/poppler/SplashOutputDev.cc
+++ b/poppler/SplashOutputDev.cc
@@ -1471,15 +1471,12 @@ void SplashOutputDev::updateCTM(GfxState *state, double m11, double m12, double
void SplashOutputDev::updateLineDash(GfxState *state)
{
- double *dashPattern;
- int dashLength;
double dashStart;
- int i;
- state->getLineDash(&dashPattern, &dashLength, &dashStart);
+ const std::vector<double> &dashPattern = state->getLineDash(&dashStart);
- std::vector<SplashCoord> dash(dashLength);
- for (i = 0; i < dashLength; ++i) {
+ std::vector<SplashCoord> dash(dashPattern.size());
+ for (std::vector<double>::size_type i = 0; i < dashPattern.size(); ++i) {
dash[i] = (SplashCoord)dashPattern[i];
if (dash[i] < 0) {
dash[i] = 0;
diff --git a/qt5/src/QPainterOutputDev.cc b/qt5/src/QPainterOutputDev.cc
index 2526875d..b017bab3 100644
--- a/qt5/src/QPainterOutputDev.cc
+++ b/qt5/src/QPainterOutputDev.cc
@@ -240,22 +240,20 @@ void QPainterOutputDev::updateCTM(GfxState *state, double m11, double m12, doubl
void QPainterOutputDev::updateLineDash(GfxState *state)
{
- double *dashPattern;
- int dashLength;
double dashStart;
- state->getLineDash(&dashPattern, &dashLength, &dashStart);
+ const std::vector<double> &dashPattern = state->getLineDash(&dashStart);
// Special handling for zero-length patterns, i.e., solid lines.
// Simply calling QPen::setDashPattern with an empty pattern does *not*
// result in a solid line. Rather, the current pattern is unchanged.
// See the implementation of the setDashPattern method in the file qpen.cpp.
- if (dashLength == 0) {
+ if (dashPattern.empty()) {
m_currentPen.setStyle(Qt::SolidLine);
m_painter.top()->setPen(m_currentPen);
return;
}
- QVector<qreal> pattern(dashLength);
+ QVector<qreal> pattern(dashPattern.size());
double scaling = state->getLineWidth();
// Negative line widths are not allowed, width 0 counts as 'one pixel width'.
@@ -263,7 +261,7 @@ void QPainterOutputDev::updateLineDash(GfxState *state)
scaling = 1.0;
}
- for (int i = 0; i < dashLength; ++i) {
+ for (std::vector<double>::size_type i = 0; i < dashPattern.size(); ++i) {
// pdf measures the dash pattern in dots, but Qt uses the
// line width as the unit.
pattern[i] = dashPattern[i] / scaling;
diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc
index 8378ea69..e15523cf 100644
--- a/qt5/src/poppler-annotation.cc
+++ b/qt5/src/poppler-annotation.cc
@@ -10,7 +10,7 @@
* Copyright (C) 2018 Dileep Sankhla <sankhla.dileep96 at gmail.com>
* Copyright (C) 2018, 2019 Tobias Deiminger <haxtibal at posteo.de>
* Copyright (C) 2018 Carlos Garcia Campos <carlosgc at gnome.org>
- * Copyright (C) 2020 Oliver Sander <oliver.sander at tu-dresden.de>
+ * Copyright (C) 2020, 2022 Oliver Sander <oliver.sander at tu-dresden.de>
* Copyright (C) 2020 Katarina Behrens <Katarina.Behrens at cib.de>
* Copyright (C) 2020 Thorsten Behrens <Thorsten.Behrens at CIB.de>
* Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, <info at kdab.com>. Work sponsored by Technische Universität Dresden
@@ -1702,13 +1702,12 @@ Annotation::Style Annotation::style() const
s.setWidth(border->getWidth());
s.setLineStyle((Annotation::LineStyle)(1 << border->getStyle()));
- const int dashArrLen = border->getDashLength();
- const double *dashArrData = border->getDash();
- QVector<double> dashArrVect(dashArrLen);
- for (int i = 0; i < dashArrLen; ++i) {
- dashArrVect[i] = dashArrData[i];
- }
- s.setDashArray(dashArrVect);
+ const std::vector<double> &dashArray = border->getDash();
+#if QT_VERSION <= QT_VERSION_CHECK(5, 14, 0)
+ s.setDashArray(QVector<double>::fromStdVector(dashArray));
+#else
+ s.setDashArray(QVector<double>(dashArray.begin(), dashArray.end()));
+#endif
}
AnnotBorderEffect *border_effect;
diff --git a/qt6/src/QPainterOutputDev.cc b/qt6/src/QPainterOutputDev.cc
index 2526875d..b017bab3 100644
--- a/qt6/src/QPainterOutputDev.cc
+++ b/qt6/src/QPainterOutputDev.cc
@@ -240,22 +240,20 @@ void QPainterOutputDev::updateCTM(GfxState *state, double m11, double m12, doubl
void QPainterOutputDev::updateLineDash(GfxState *state)
{
- double *dashPattern;
- int dashLength;
double dashStart;
- state->getLineDash(&dashPattern, &dashLength, &dashStart);
+ const std::vector<double> &dashPattern = state->getLineDash(&dashStart);
// Special handling for zero-length patterns, i.e., solid lines.
// Simply calling QPen::setDashPattern with an empty pattern does *not*
// result in a solid line. Rather, the current pattern is unchanged.
// See the implementation of the setDashPattern method in the file qpen.cpp.
- if (dashLength == 0) {
+ if (dashPattern.empty()) {
m_currentPen.setStyle(Qt::SolidLine);
m_painter.top()->setPen(m_currentPen);
return;
}
- QVector<qreal> pattern(dashLength);
+ QVector<qreal> pattern(dashPattern.size());
double scaling = state->getLineWidth();
// Negative line widths are not allowed, width 0 counts as 'one pixel width'.
@@ -263,7 +261,7 @@ void QPainterOutputDev::updateLineDash(GfxState *state)
scaling = 1.0;
}
- for (int i = 0; i < dashLength; ++i) {
+ for (std::vector<double>::size_type i = 0; i < dashPattern.size(); ++i) {
// pdf measures the dash pattern in dots, but Qt uses the
// line width as the unit.
pattern[i] = dashPattern[i] / scaling;
diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc
index 940ea12d..ed27a1f1 100644
--- a/qt6/src/poppler-annotation.cc
+++ b/qt6/src/poppler-annotation.cc
@@ -10,7 +10,7 @@
* Copyright (C) 2018 Dileep Sankhla <sankhla.dileep96 at gmail.com>
* Copyright (C) 2018, 2019 Tobias Deiminger <haxtibal at posteo.de>
* Copyright (C) 2018 Carlos Garcia Campos <carlosgc at gnome.org>
- * Copyright (C) 2020, 2021 Oliver Sander <oliver.sander at tu-dresden.de>
+ * Copyright (C) 2020-2022 Oliver Sander <oliver.sander at tu-dresden.de>
* Copyright (C) 2020 Katarina Behrens <Katarina.Behrens at cib.de>
* Copyright (C) 2020 Thorsten Behrens <Thorsten.Behrens at CIB.de>
* Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, <info at kdab.com>. Work sponsored by Technische Universität Dresden
@@ -1341,13 +1341,8 @@ Annotation::Style Annotation::style() const
s.setWidth(border->getWidth());
s.setLineStyle((Annotation::LineStyle)(1 << border->getStyle()));
- const int dashArrLen = border->getDashLength();
- const double *dashArrData = border->getDash();
- QVector<double> dashArrVect(dashArrLen);
- for (int i = 0; i < dashArrLen; ++i) {
- dashArrVect[i] = dashArrData[i];
- }
- s.setDashArray(dashArrVect);
+ const std::vector<double> &dashArray = border->getDash();
+ s.setDashArray(QVector<double>(dashArray.begin(), dashArray.end()));
}
AnnotBorderEffect *border_effect;
More information about the poppler
mailing list