poppler/Annot.cc | 121 +++++++++++++++++++++++++++---------------------------- 1 file changed, 61 insertions(+), 60 deletions(-)
New commits: commit b17be2bc32cf71bac0473bf4ac16359e3027b4fc Author: Carlos Garcia Campos <[email protected]> Date: Sun Oct 3 12:14:11 2010 +0200 [annots] Fix a crash when drawing square/circle annots without a border Fixes bug #30580 diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 0cb6516..632b8be 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -4378,6 +4378,7 @@ void AnnotGeometry::draw(Gfx *gfx, GBool printing) { if (border) { int i, dashLength; double *dash; + double borderWidth = border->getWidth(); switch (border->getStyle()) { case AnnotBorder::borderDashed: @@ -4392,70 +4393,70 @@ void AnnotGeometry::draw(Gfx *gfx, GBool printing) { appearBuf->append("[] 0 d\n"); break; } - appearBuf->appendf("{0:.2f} w\n", border->getWidth()); - } + appearBuf->appendf("{0:.2f} w\n", borderWidth); - if (interiorColor) - setColor(interiorColor, gTrue); + if (interiorColor) + setColor(interiorColor, gTrue); - if (type == typeSquare) { - appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} re\n", - border->getWidth() / 2.0, border->getWidth() / 2.0, - (rect->x2 - rect->x1) - border->getWidth(), - (rect->y2 - rect->y1) - border->getWidth()); - } else { - double width, height; - double b; - double x1, y1, x2, y2, x3, y3; - - width = rect->x2 - rect->x1; - height = rect->y2 - rect->y1; - b = border->getWidth() / 2.0; - - x1 = b; - y1 = height / 2.0; - appearBuf->appendf ("{0:.2f} {1:.2f} m\n", x1, y1); - - y1 += height / 4.0; - x2 = width / 4.0; - y2 = height - b; - x3 = width / 2.0; - y3 = y2; - appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", - x1, y1, x2, y2, x3, y3); - x2 = width - b; - y2 = y1; - x1 = x3 + (width / 4.0); - y1 = y3; - x3 = x2; - y3 = height / 2.0; - appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", - x1, y1, x2, y2, x3, y3); - - x2 = x1; - y2 = b; - x1 = x3; - y1 = height / 4.0; - x3 = width / 2.0; - y3 = b; - appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", - x1, y1, x2, y2, x3, y3); - - x2 = b; - y2 = y1; - x1 = width / 4.0; - y1 = b; - x3 = b; - y3 = height / 2.0; - appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", - x1, y1, x2, y2, x3, y3); + if (type == typeSquare) { + appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} re\n", + borderWidth / 2.0, borderWidth / 2.0, + (rect->x2 - rect->x1) - borderWidth, + (rect->y2 - rect->y1) - borderWidth); + } else { + double width, height; + double b; + double x1, y1, x2, y2, x3, y3; + + width = rect->x2 - rect->x1; + height = rect->y2 - rect->y1; + b = borderWidth / 2.0; + + x1 = b; + y1 = height / 2.0; + appearBuf->appendf ("{0:.2f} {1:.2f} m\n", x1, y1); + + y1 += height / 4.0; + x2 = width / 4.0; + y2 = height - b; + x3 = width / 2.0; + y3 = y2; + appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", + x1, y1, x2, y2, x3, y3); + x2 = width - b; + y2 = y1; + x1 = x3 + (width / 4.0); + y1 = y3; + x3 = x2; + y3 = height / 2.0; + appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", + x1, y1, x2, y2, x3, y3); + + x2 = x1; + y2 = b; + x1 = x3; + y1 = height / 4.0; + x3 = width / 2.0; + y3 = b; + appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", + x1, y1, x2, y2, x3, y3); + + x2 = b; + y2 = y1; + x1 = width / 4.0; + y1 = b; + x3 = b; + y3 = height / 2.0; + appearBuf->appendf ("{0:.2f} {1:.2f} {2:.2f} {3:.2f} {4:.2f} {5:.2f} c\n", + x1, y1, x2, y2, x3, y3); - } + } - if (interiorColor) - appearBuf->append ("b\n"); - else - appearBuf->append ("S\n"); + if (interiorColor) + appearBuf->append ("b\n"); + else + appearBuf->append ("S\n"); + } appearBuf->append ("Q\n"); double bbox[4]; _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
