glib/poppler-annot.cc | 2 +- poppler/Annot.cc | 24 +++++------------------- poppler/Annot.h | 5 ++--- poppler/Gfx.cc | 2 +- qt4/src/poppler-annotation.cc | 2 +- 5 files changed, 10 insertions(+), 25 deletions(-)
New commits: commit 6798d3e52e36e91bceff3a1a96372e9d9c6f3813 Author: Carlos Garcia Campos <[email protected]> Date: Sun Dec 6 15:34:36 2009 +0100 Use fixed size array in AnnotColor diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc index e019eca..50496e7 100644 --- a/glib/poppler-annot.cc +++ b/glib/poppler-annot.cc @@ -391,7 +391,7 @@ poppler_annot_get_color (PopplerAnnot *poppler_annot) color = poppler_annot->annot->getColor (); if (color) { - double *values = color->getValues (); + const double *values = color->getValues (); switch (color->getSpace ()) { diff --git a/poppler/Annot.cc b/poppler/Annot.cc index fb65ea6..dd360ec 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -607,19 +607,16 @@ AnnotBorderBS::AnnotBorderBS(Dict *dict) { AnnotColor::AnnotColor() { length = 0; - values = NULL; } AnnotColor::AnnotColor(double gray) { length = 1; - values = (double *) gmallocn (length, sizeof(double)); values[0] = gray; } AnnotColor::AnnotColor(double r, double g, double b) { length = 3; - values = (double *) gmallocn (length, sizeof(double)); values[0] = r; values[1] = g; @@ -628,7 +625,6 @@ AnnotColor::AnnotColor(double r, double g, double b) { AnnotColor::AnnotColor(double c, double m, double y, double k) { length = 4; - values = (double *) gmallocn (length, sizeof(double)); values[0] = c; values[1] = m; @@ -637,12 +633,11 @@ AnnotColor::AnnotColor(double c, double m, double y, double k) { } AnnotColor::AnnotColor(Array *array) { - // TODO: check what Acrobat does in the case of having more than 5 numbers. - if (array->getLength() < 5) { - length = array->getLength(); - values = (double *) gmallocn (length, sizeof(double)); + length = array->getLength(); + if (length > 4) + length = 4; - for(int i = 0; i < length; i++) { + for (int i = 0; i < length; i++) { Object obj1; if (array->get(i, &obj1)->isNum()) { @@ -654,18 +649,9 @@ AnnotColor::AnnotColor(Array *array) { values[i] = 0; } obj1.free(); - } - } else { - values = NULL; - length = 0; } } -AnnotColor::~AnnotColor() { - if (values) - gfree (values); -} - //------------------------------------------------------------------------ // AnnotBorderStyle //------------------------------------------------------------------------ @@ -1076,7 +1062,7 @@ void Annot::setColor(AnnotColor *new_color) { if (new_color) { Object obj1, obj2; - double *values = new_color->getValues(); + const double *values = new_color->getValues(); obj1.initArray(xref); for (int i = 0; i < (int)new_color->getSpace(); i++) diff --git a/poppler/Annot.h b/poppler/Annot.h index cb0bc96..3f3ed70 100644 --- a/poppler/Annot.h +++ b/poppler/Annot.h @@ -291,14 +291,13 @@ public: AnnotColor(double r, double g, double b); AnnotColor(double c, double m, double y, double k); AnnotColor(Array *array); - ~AnnotColor(); AnnotColorSpace getSpace() const { return (AnnotColorSpace) length; } - double *getValues() const { return values; } + const double *getValues() const { return values; } private: - double *values; + double values[4]; int length; }; diff --git a/poppler/Gfx.cc b/poppler/Gfx.cc index 2a4c9b8..401b52e 100644 --- a/poppler/Gfx.cc +++ b/poppler/Gfx.cc @@ -4675,7 +4675,7 @@ void Gfx::drawAnnot(Object *str, AnnotBorder *border, AnnotColor *aColor, out->updateStrokeColorSpace(state); } if (aColor && (aColor->getSpace() == AnnotColor::colorRGB)) { - double *values = aColor->getValues(); + const double *values = aColor->getValues(); r = values[0]; g = values[1]; b = values[2]; diff --git a/qt4/src/poppler-annotation.cc b/qt4/src/poppler-annotation.cc index 22f1e6a..98573c0 100644 --- a/qt4/src/poppler-annotation.cc +++ b/qt4/src/poppler-annotation.cc @@ -2039,7 +2039,7 @@ QColor convertAnnotColor( AnnotColor *color ) return QColor(); QColor newcolor; - double *color_data = color->getValues(); + const double *color_data = color->getValues(); switch ( color->getSpace() ) { case AnnotColor::colorTransparent: // = 0, _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
