diff options
| author | Alvin Penner <penner@vaxxine.com> | 2012-03-21 22:45:11 +0000 |
|---|---|---|
| committer | apenner <penner@vaxxine.com> | 2012-03-21 22:45:11 +0000 |
| commit | c556a7f645c32b7b15a3e711d4e4c84b38b7625b (patch) | |
| tree | 993d71cffac2ef0f4ef498f1e3141976d049934a /src/extension/internal/pdfinput/pdf-parser.cpp | |
| parent | powerstroke: properly implement rounded joins. brain buster!! (diff) | |
| download | inkscape-c556a7f645c32b7b15a3e711d4e4c84b38b7625b.tar.gz inkscape-c556a7f645c32b7b15a3e711d4e4c84b38b7625b.zip | |
pdf import. improve upon rev 11094. transform four corners of bbox separately (Bug 919176)
Fixed bugs:
- https://launchpad.net/bugs/919176
(bzr r11112)
Diffstat (limited to 'src/extension/internal/pdfinput/pdf-parser.cpp')
| -rw-r--r-- | src/extension/internal/pdfinput/pdf-parser.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp index 3b19f925e..5347a85ac 100644 --- a/src/extension/internal/pdfinput/pdf-parser.cpp +++ b/src/extension/internal/pdfinput/pdf-parser.cpp @@ -1672,17 +1672,23 @@ void PdfParser::opShFill(Object args[], int /*numArgs*/) if (matrix != NULL) { xTemp = matrix[0]*xMin + matrix[2]*yMin + matrix[4]; yTemp = matrix[1]*xMin + matrix[3]*yMin + matrix[5]; - xMin = xTemp; - yMin = yTemp; + state->moveTo(xTemp, yTemp); + xTemp = matrix[0]*xMax + matrix[2]*yMin + matrix[4]; + yTemp = matrix[1]*xMax + matrix[3]*yMin + matrix[5]; + state->lineTo(xTemp, yTemp); xTemp = matrix[0]*xMax + matrix[2]*yMax + matrix[4]; yTemp = matrix[1]*xMax + matrix[3]*yMax + matrix[5]; - xMax = xTemp; - yMax = yTemp; + state->lineTo(xTemp, yTemp); + xTemp = matrix[0]*xMin + matrix[2]*yMax + matrix[4]; + yTemp = matrix[1]*xMin + matrix[3]*yMax + matrix[5]; + state->lineTo(xTemp, yTemp); + } + else { + state->moveTo(xMin, yMin); + state->lineTo(xMax, yMin); + state->lineTo(xMax, yMax); + state->lineTo(xMin, yMax); } - state->moveTo(xMin, yMin); - state->lineTo(xMax, yMin); - state->lineTo(xMax, yMax); - state->lineTo(xMin, yMax); state->closePath(); state->clip(); if (savedState) |
