poppler/Annot.cc | 3 ++- poppler/CharCodeToUnicode.cc | 3 ++- poppler/SplashOutputDev.cc | 9 ++++----- 3 files changed, 8 insertions(+), 7 deletions(-)
New commits: commit b72a534d6c7d8bc026812b68f9d9ac6bf9a2200a Merge: f2e4154 ef3f758 Author: Albert Astals Cid <[email protected]> Date: Sun Aug 3 01:06:57 2014 +0200 Merge remote-tracking branch 'origin/poppler-0.26' commit ef3f7585fac086de0919aa0bb0ef91a5070ac23e Author: Jiri Slaby <[email protected]> Date: Sun Aug 3 01:05:00 2014 +0200 Improve non-latin characters in inline notes Preview commit had by mistake changes in these two files that belong here Bug #65956 diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 591fe79..fa98b69 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -30,6 +30,7 @@ // Copyright (C) 2013 Peter Breitenlohner <[email protected]> // Copyright (C) 2013 Adrian Johnson <[email protected]> // Copyright (C) 2014 Marek Kasik <[email protected]> +// Copyright (C) 2014 Jiri Slaby <[email protected]> // // 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 diff --git a/poppler/CharCodeToUnicode.cc b/poppler/CharCodeToUnicode.cc index b1c1bab..59b7c93 100644 --- a/poppler/CharCodeToUnicode.cc +++ b/poppler/CharCodeToUnicode.cc @@ -22,6 +22,7 @@ // Copyright (C) 2010 Jakub Wilk <[email protected]> // Copyright (C) 2012 Thomas Freitag <[email protected]> // Copyright (C) 2012 Adrian Johnson <[email protected]> +// Copyright (C) 2014 Jiri Slaby <[email protected]> // // 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 commit 1b9c54286a4cdfaa284795933c20acf3c7e13bfc Author: Ed Porras <[email protected]> Date: Sun Aug 3 01:01:35 2014 +0200 Don't check for inlineImg twice Bug #82059 diff --git a/poppler/Annot.cc b/poppler/Annot.cc index a559836..591fe79 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -4087,7 +4087,7 @@ void Annot::layoutText(GooString *text, GooString *outBuf, int *i, // This assumes an identity CMap. outBuf->append((uChar >> 8) & 0xff); outBuf->append(uChar & 0xff); - } else if (ccToUnicode->mapToCharCode(&uChar, &c, 1)) { + } else if (ccToUnicode->mapToCharCode(&uChar, &c, 2)) { ccToUnicode->decRefCnt(); if (font->isCIDFont()) { // TODO: This assumes an identity CMap. It should be extended to diff --git a/poppler/CharCodeToUnicode.cc b/poppler/CharCodeToUnicode.cc index 16ba6d4..b1c1bab 100644 --- a/poppler/CharCodeToUnicode.cc +++ b/poppler/CharCodeToUnicode.cc @@ -633,7 +633,7 @@ int CharCodeToUnicode::mapToUnicode(CharCode c, Unicode **u) { int CharCodeToUnicode::mapToCharCode(Unicode* u, CharCode *c, int usize) { //look for charcode in map - if (usize == 1) { + if (usize == 1 || (usize > 1 && !(*u & ~0xff))) { if (isIdentity) { *c = (CharCode) *u; return 1; diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc index 01979fd..fd0f841 100644 --- a/poppler/SplashOutputDev.cc +++ b/poppler/SplashOutputDev.cc @@ -32,6 +32,7 @@ // Copyright (C) 2011, 2012 Adrian Johnson <[email protected]> // Copyright (C) 2013 Lu Wang <[email protected]> // Copyright (C) 2013 Li Junling <[email protected]> +// Copyright (C) 2014 Ed Porras <[email protected]> // // 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 @@ -2694,11 +2695,9 @@ void SplashOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, splash->fillImageMask(&imageMaskSrc, &imgMaskData, width, height, mat, t3GlyphStack != NULL); if (inlineImg) { - if (inlineImg) { - while (imgMaskData.y < height) { - imgMaskData.imgStr->getLine(); - ++imgMaskData.y; - } + while (imgMaskData.y < height) { + imgMaskData.imgStr->getLine(); + ++imgMaskData.y; } } commit e7825f7cbbe7cc9c324fcb34c2e0dcae75f4172a Author: Carlos Garcia Campos <[email protected]> Date: Fri Jul 25 15:45:55 2014 +0200 glib: Fix a memory leak when getting text layout and attributes diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc index a4c9681..34d6e35 100644 --- a/glib/poppler-page.cc +++ b/glib/poppler-page.cc @@ -2233,6 +2233,8 @@ poppler_page_get_text_layout_for_area (PopplerPage *page, rect->y2 = y2; offset++; } + + delete word_sel; } if (i < n_lines - 1 && offset > 0) @@ -2394,6 +2396,8 @@ poppler_page_get_text_attributes_for_area (PopplerPage *page, attrs->end_index = offset; offset++; } + + delete word_sel; } if (i < n_lines - 1) commit a1ecff0f0ab81fe76f63244250d96e7ef275f402 Author: Carlos Garcia Campos <[email protected]> Date: Fri Jul 25 11:25:42 2014 +0200 glib: Return NULL in poppler_annot_get_contents also for empty strings diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc index 13bc768..e87bce3 100644 --- a/glib/poppler-annot.cc +++ b/glib/poppler-annot.cc @@ -799,7 +799,7 @@ poppler_annot_get_contents (PopplerAnnot *poppler_annot) contents = poppler_annot->annot->getContents (); - return contents ? _poppler_goo_string_to_utf8 (contents) : NULL; + return contents && contents->getLength() > 0 ? _poppler_goo_string_to_utf8 (contents) : NULL; } /** commit ab1113d10ef712c7c44cd4b4bb6bc79f9ca3702c Author: Anuj Khare <[email protected]> Date: Thu Jul 24 19:47:22 2014 +0200 annots: Fix a crash when adding annot without contents Having no content in an annotation results in a crash when generating its appearance, since the contents pointer is dereferenced. For consistency, the same has been done in Annot::initialize. diff --git a/poppler/Annot.cc b/poppler/Annot.cc index fa29739..a559836 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -1265,7 +1265,7 @@ void Annot::initialize(PDFDoc *docA, Dict *dict) { if (dict->lookup("Contents", &obj1)->isString()) { contents = obj1.getString()->copy(); } else { - contents = NULL; + contents = new GooString(); } obj1.free(); @@ -1641,9 +1641,7 @@ Annot::~Annot() { annotObj.free(); delete rect; - - if (contents) - delete contents; + delete contents; if (name) delete name; @@ -3015,6 +3013,8 @@ void AnnotFreeText::generateFreeTextAppearance() fontsize = 10; if (fontcolor == NULL) fontcolor = new AnnotColor(0, 0, 0); // Black + if (!contents) + contents = new GooString (); // Draw box GBool doFill = (color && color->getSpace() != AnnotColor::colorTransparent); commit 94ea9d8e1631abfbb8cc078100942d46b1356970 Author: Carlos Garcia Campos <[email protected]> Date: Thu Jul 24 10:46:17 2014 +0200 cairo: Make sure we always push a transparency group in setSoftMaskFromImageMask() Because that's what unsetSoftMaskFromImageMask() assumes. https://bugs.freedesktop.org/show_bug.cgi?id=81624 diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc index f31b46b..c2827c6 100644 --- a/poppler/CairoOutputDev.cc +++ b/poppler/CairoOutputDev.cc @@ -1880,46 +1880,44 @@ void CairoOutputDev::setSoftMaskFromImageMask(GfxState *state, Object *ref, Stre delete imgStr; invert_bit = invert ? 1 : 0; - if (pix ^ invert_bit) - return; - - cairo_save (cairo); - cairo_rectangle (cairo, 0., 0., width, height); - cairo_fill (cairo); - cairo_restore (cairo); - if (cairo_shape) { - cairo_save (cairo_shape); - cairo_rectangle (cairo_shape, 0., 0., width, height); - cairo_fill (cairo_shape); - cairo_restore (cairo_shape); + if (!(pix ^ invert_bit)) { + cairo_save (cairo); + cairo_rectangle (cairo, 0., 0., width, height); + cairo_fill (cairo); + cairo_restore (cairo); + if (cairo_shape) { + cairo_save (cairo_shape); + cairo_rectangle (cairo_shape, 0., 0., width, height); + cairo_fill (cairo_shape); + cairo_restore (cairo_shape); + } } - return; - } + } else { + cairo_push_group_with_content (cairo, CAIRO_CONTENT_ALPHA); - cairo_push_group_with_content (cairo, CAIRO_CONTENT_ALPHA); + /* shape is 1.0 for painted areas, 0.0 for unpainted ones */ - /* shape is 1.0 for painted areas, 0.0 for unpainted ones */ + cairo_matrix_t matrix; + cairo_get_matrix (cairo, &matrix); + //XXX: it is possible that we should only do sub pixel positioning if + // we are rendering fonts */ + if (!printing && prescaleImages && matrix.xy == 0.0 && matrix.yx == 0.0) { + drawImageMaskPrescaled(state, ref, str, width, height, invert, gFalse, inlineImg); + } else { + drawImageMaskRegular(state, ref, str, width, height, invert, gFalse, inlineImg); + } - cairo_matrix_t matrix; - cairo_get_matrix (cairo, &matrix); - //XXX: it is possible that we should only do sub pixel positioning if - // we are rendering fonts */ - if (!printing && prescaleImages && matrix.xy == 0.0 && matrix.yx == 0.0) { - drawImageMaskPrescaled(state, ref, str, width, height, invert, gFalse, inlineImg); - } else { - drawImageMaskRegular(state, ref, str, width, height, invert, gFalse, inlineImg); - } + if (state->getFillColorSpace()->getMode() == csPattern) { + cairo_set_source_rgb (cairo, 1, 1, 1); + cairo_set_matrix (cairo, &mask_matrix); + cairo_mask (cairo, mask); + } - if (state->getFillColorSpace()->getMode() == csPattern) { - cairo_set_source_rgb (cairo, 1, 1, 1); - cairo_set_matrix (cairo, &mask_matrix); - cairo_mask (cairo, mask); + if (mask) + cairo_pattern_destroy (mask); + mask = cairo_pop_group (cairo); } - if (mask) - cairo_pattern_destroy (mask); - mask = cairo_pop_group (cairo); - saveState(state); double bbox[4] = {0,0,1,1}; // dummy beginTransparencyGroup(state, bbox, state->getFillColorSpace(), _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
